我正在尝试使用panda来转换csv。 我有* .csv文件看起来像:
header1,value1,header2,value2,header3,value3,header4,value4
header2,value2,header3,value3
header1,value1,header2,value2
header1,value1,header3,value3,header4,value4
我想要一个新的csv,如:
header1,header2,header3,header4
value1,value2,value3,value4
,value2,value3,
value1,value2,,
value1,,value3,value4
代码的开头看起来像:
import csv
import pandas as pd
# Read the file
df = pd.read_csv('in.csv')
df_data = df[1,9]
SOME CODE
df_data.to_csv('output.csv')
谢谢,
答案 0 :(得分:0)
加载没有标题的数据,以便将其全部保存在数据框中:
df=pd.read_csv('foobar.txt', sep=',', header=None)
然后将其重新整形为一个系列,但保持0级索引以从原始csv获取行编号:
s = df.stack()
s.index = s.index.droplevel(-1)
s
Out[92]:
0 header1
0 value1
0 header2
0 value2
0 header3
0 value3
0 header4
0 value4
1 header2
1 value2
...
现在将此系列的奇数和偶数字段连接到数据帧,将标题列添加到索引并将其取消堆栈:
pd.concat([s[::2], s[1::2]], axis=1).set_index(0, append=True).unstack(1)
Out[104]:
1
0 header1 header2 header3 header4
0 value1 value2 value3 value4
1 None value2 value3 None
2 value1 value2 None None
3 value1 None value3 value4