7

标题中的概率。例如:

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,或在读取时删除未命名的列?

4

4 回答 4

8

您可以通过to_csvindex的and参数删除行标签。index_label

于 2013-10-17T14:08:21.593 回答
5

这些不是对称的,因为 csv 格式由于定位而存在歧义。您需要指定一个index_col回读

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
于 2013-10-17T14:10:23.757 回答
0

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

于 2013-10-17T14:06:10.190 回答
0

那就是如何使用索引 df.to_csv('test.csv', index_label=False) 但是对我来说,当我尝试提交到 Kaggle 时,它​​返回错误“错误:记录 1 有 3 列但预期为 2”,所以我使用此代码解决了它。

于 2017-04-23T07:01:54.897 回答