Python 将dataframe保存并加载到csv会导致未命名列

Python 将dataframe保存并加载到csv会导致未命名列,python,pandas,Python,Pandas,标题中的prob。例如: x=[('a','a','c') for i in range(5)] df = DataFrame(x,columns=['col1','col2','col3']) df.to_csv('test.csv') df1 = read_csv('test.csv') Unnamed: 0 col1 col2 col3 0 0 a a c 1 1 a a c 2 2

标题中的prob。例如:

x=[('a','a','c') for i in range(5)]
df = DataFrame(x,columns=['col1','col2','col3'])
df.to_csv('test.csv')
df1 = read_csv('test.csv')

   Unnamed: 0 col1 col2 col3
0           0    a    a    c
1           1    a    a    c
2           2    a    a    c
3           3    a    a    c
4           4    a    a    c

原因似乎是,在保存数据帧时,索引列也会被写入,标题中没有名称。然后,当您再次加载csv时,它将以未命名列的形式加载索引列。这是虫子吗?如何避免使用索引编写csv,或者在读取时删除未命名的列?

您可以使用参数明确指定要写入的列。

您可以通过
索引
索引标签
删除行标签。由于csv格式中的位置不明确,因此这些列不是对称的。您需要在回读时指定一个
索引列

In [1]: x=[('a','a','c') for i in range(5)]

In [2]: df = DataFrame(x,columns=['col1','col2','col3'])

In [3]: df.to_csv('test.csv')

In [4]: !cat test.csv
,col1,col2,col3
0,a,a,c
1,a,a,c
2,a,a,c
3,a,a,c
4,a,a,c

In [5]: pd.read_csv('test.csv',index_col=0)
Out[5]: 
  col1 col2 col3
0    a    a    c
1    a    a    c
2    a    a    c
3    a    a    c
4    a    a    c
这看起来与上面的非常相似,“foo”是列还是索引

In [6]: df.index.name = 'foo'

In [7]: df.to_csv('test.csv')

In [8]: !cat test.csv
foo,col1,col2,col3
0,a,a,c
1,a,a,c
2,a,a,c
3,a,a,c
4,a,a,c
这就是如何使用索引
df.to\u csv('test.csv',index\u label=False)

但对我来说,当我尝试提交到Kaggle时,它的返回错误是“error:Record 1有3列,但预期为2列”,所以我解决了这个问题

谢谢,我认为解决方案很简单:)是的,只需指定
index\u col=0
就不好了,因为我可能有很多很多列。。不过我能做的是df[df.columns].to_csv()。这不是一个大麻烦。这是我一直在寻找的,因为它避免了问题而不是处理后遗症。你应该考虑增加一些解释性文本来提高你的答案。