Skip to main content
 首页 » 编程设计

python之使用 Python 重新排列 csv 中的数据

2025年05月04日14kenshinobiy

我有一个 .csv 文件,格式如下:

A   B   C   D   E   F 
X1  X2  X3  X4  X5  X6 
Y1  Y2  Y3  Y4  Y5  Y6 
Z1  Z2  Z3  Z4  Z5  Z6 

我想要的:

A   X1 
B   X2 
C   X3 
D   X4 
E   X5 
F   X6 
A   Y1 
B   Y2 
C   Y3 
D   Y4 
E   Y5 
F   Y6 
A   Z1 
B   Z2 
C   Z3 
D   Z4 
E   Z5 
F   Z6 

为了获得最终结果,我无法全神贯注于内置的转置函数。任何帮助将不胜感激。

请您参考如下方法:

您可以使用 pandas 简单地融化您的数据框:

import pandas as pd 
 
df = pd.read_csv(csv_filename) 
>>> pd.melt(df) 
   variable value 
0         A    X1 
1         A    Y1 
2         A    Z1 
3         B    X2 
4         B    Y2 
5         B    Z2 
6         C    X3 
7         C    Y3 
8         C    Z3 
9         D    X4 
10        D    Y4 
11        D    Z4 
12        E    X5 
13        E    Y5 
14        E    Z5 
15        F    X6 
16        F    Y6 
17        F    Z6 

纯 python 解决方案如下:

file_out_delimiter = ','  # Use '\t' for tab delimited. 
with open(filename, 'r') as f, open(filename_out, 'w') as f_out: 
    headers = f.readline().split() 
    for row in f: 
        for pair in zip(headers, row.split()): 
            f_out.write(file_out_delimiter.join(pair) + '\n')   

产生以下文件内容:

A,X1 
B,X2 
C,X3 
D,X4 
E,X5 
F,X6 
A,Y1 
B,Y2 
C,Y3 
D,Y4 
E,Y5 
F,Y6 
A,Z1 
B,Z2 
C,Z3 
D,Z4 
E,Z5 
F,Z6