我有一个csv文件,我需要更改colum索引。我当前的文件是
A B C D E F G
1 0 0.5 5 1 7 6
2 0 0.6 4 0 7 6
3 0 0.7 3 1 7 6
4 0 0.8 2 0 7 6
但我需要它:
D F G A B C E
5 7 6 1 0 0.5 1
4 7 6 2 0 0.6 0
3 7 6 3 0 0.7 1
2 7 6 4 0 0.8 0
这只是一个测试用例。我有一个包含1000多列的文件。感谢
答案 0 :(得分:3)
使用csv.DictReader csv.DictWriter。
import csv
with open('names_in.csv') as csvin, open('names_out.csv', 'w') as csvout:
reader = csv.DictReader(csvin)
writer = csv.DictWriter(csvout, fieldnames=["D", "F", "G", "A", "B","C", "E"])
for row in reader:
writer.writerow(row)
确保字段名与输入文件中的字段匹配。您只需复制reader.fieldnames
并重新排列即可。
答案 1 :(得分:1)
您可以使用pandas.read_csv
阅读文件,然后重新排序列并使用to_csv
重写您的文件:
import pandas as pd
df = pd.read_csv(your_file)
ncols = 3
cols = df.columns[-ncols:].tolist() + df.columns[:-ncols].tolist()
df[cols].to_csv(your_file)
或一行:
(pd.read_csv(your_file)
[df.columns[-ncols:].tolist() + df.columns[:-ncols].tolist()]
.to_csv(your_file, index=False)
)
演示:
In [12]: ncols = 3
In [13]: cols = df.columns[-ncols:].tolist() + df.columns[:-ncols].tolist()
In [14]: cols
Out[14]: ['E', 'F', 'G', 'A', 'B', 'C', 'D']
In [15]: df
Out[15]:
A B C D E F G
0 1 0 0.5 5 1 7 6
1 2 0 0.6 4 0 7 6
2 3 0 0.7 3 1 7 6
3 4 0 0.8 2 0 7 6
In [16]: df[cols]
Out[16]:
E F G A B C D
0 1 7 6 1 0 0.5 5
1 0 7 6 2 0 0.6 4
2 1 7 6 3 0 0.7 3
3 0 7 6 4 0 0.8 2