Pandas to_csv调用前面有一个逗号

时间:2015-06-02 20:25:32

标签: python csv pandas

我有一个数据文件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的经验不足,所以我不确定这是“是的,它只是那样做”或问题是什么 - 但我花了很长时间试图解决这个问题,但无法通过搜索找到它。

我怎样才能让它不用逗号前缀,也许同样重要 - 为什么要这样做?

1 个答案:

答案 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

对于您可能有一些要保存的索引值的情况