我有一个以下结构的数据框
A B C D E
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
我使用以下内容从文件temp.dat中读取此CSV:
dfinal = pd.read_csv("temp.dat", header=0)
然后完成以下内容
os.remove("temp.dat")
dfinal = dfinal.sort_values(by="B", ascending=True)
f = open(t, "w")
f.write(stuff)
f.write(stuff)
dfinal.to_csv(t, index=False)
f.close()
在上面的代码中删除了临时文件,数据帧通过上升日期进行排序,然后打开了名称分配给t
的新文件。然后是两行编写了元数据,并将数据帧写入文件并最终关闭,但是编写如上所述的数据框在列名称上产生错误。
当前我的文件目前:
stuff
stuff
21,342,231,0,2 #Column names are being replaced here with unknown numbers
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
列的名称未正确打印,因为2个"东西"行之后的第一行应该是从csv temp.dat中读取的标题,但是F.Write语句的写入使列弄乱了。<<<<<<<<<</p>
我所需的输出将是:
stuff
stuff
A B C D E
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
LOCATION DATE DATE 1 1
我将如何实现这一目标?
我认为您需要mode='a'
to_csv
中的python写入模式append
:
print (dfinal)
A B C D E
0 LOCATION DATE1 DATE 1 1
1 LOCATION DATE5 DATE 1 1
2 LOCATION DATE DATE 1 1
3 LOCATION DATE DATE 1 1
t = "temp.dat"
stuff = 'stuffn'
dfinal = dfinal.sort_values(by="B", ascending=True)
#write metadata
with open(t, "w") as f:
f.write(stuff)
f.write(stuff)
#append df to existing file filled by metadata
dfinal.to_csv(t, index=False, mode='a')
#omit first 2 metadata rows
df = pd.read_csv(t, header=2)
print (df)
A B C D E
0 LOCATION DATE DATE 1 1
1 LOCATION DATE DATE 1 1
2 LOCATION DATE1 DATE 1 1
3 LOCATION DATE5 DATE 1 1