我有一个数据文件apples.csv,其标题如下:
"id","str1","str2","str3","num1","num2"
我用pandas将其读入数据框:
apples = pd.read_csv('apples.csv',delimiter=",",sep=r"\s+")
然后我做了一些事情,但忽略了(我把它全部注释掉了,我的整体问题仍然存在,所以说这些东西在这里无关紧要。)
然后我把它保存出来:
apples.to_csv('bananas.csv',columns=["id","str1","str2","str3","num1","num2"])
现在,看看bananas.csv,它的标题是:
,id,str1,str2,str3,num1,num2
没有更多的引号(我并不关心它,因为它不会影响文件中的任何内容),然后是那个领先的逗号。 随后的行现在有一个额外的列,因此它保存了7列。但如果我这样做:
print(len(apples.columns))
在保存之前,它会显示6列......
我通常使用Java / Perl / R,对Python,特别是Pandas的经验不足,所以我不确定这是“是的,它只是那样做”或问题是什么 - 但我花了很长时间试图解决这个问题,但无法通过搜索找到它。
我怎样才能让它不用逗号前缀,也许同样重要 - 为什么要这样做?
答案 0 :(得分:23)
设置index=False
(默认为True
,因此您看到此输出的原因),以便它不会将索引值保存到您的csv,请参阅docs
所以这个:
df = pd.DataFrame({'a':np.arange(5), 'b':np.arange(5)})
df.to_csv(r'c:\data\t.csv')
结果
,a,b
0,0,0
1,1,1
2,2,2
3,3,3
4,4,4
虽然这个:
df.to_csv(r'c:\data\t.csv', index=False)
结果如下:
a,b
0,0
1,1
2,2
3,3
4,4
对于您可能有一些要保存的索引值的情况