删除空的索引列熊猫数据框-轴中不包含标签['']

时间:2018-08-22 20:02:41

标签: python pandas

我有以下数据框:

enter image description here

numeroLote 525值之间。 我想在 numeroLote 更改其值时为每个数据创建一个导出csv文件,然后执行以下操作:

for i in range(5,26):
    print(i)
    a = racimitos[racimitos['numeroLote']==i][['peso','fecha','numeroLote']]
    a.to_csv('racimitos{}.csv'.format(i), sep=',', header=True, index=True)

然后,我得到类似于以下数据集:

enter image description here

会生成另一列,就像上面红色框中所包围的一样……

我尝试通过以下方式删除此列:

for i in range(5,26):
    print(i)
    a = racimitos[racimitos['numeroLote']==i][['peso','fecha','numeroLote']]
    a.to_csv('racimitos{}.csv'.format(i), sep=',', header=True, index=True)
    a.drop(columns=[' '], axis=1,)

但是我得到这个错误:

KeyError                                  Traceback (most recent call last)
<ipython-input-18-e3ad718d5396> in <module>()
      9     a = racimitos[racimitos['numeroLote']==i][['peso','fecha','numeroLote']]
     10     a.to_csv('racimitos{}.csv'.format(i), sep=',', header=True, index=True)
---> 11     a.drop(columns=[' '], axis=1,)

~/anaconda3/envs/sioma/lib/python3.6/site-packages/pandas/core/indexes/base.py in drop(self, labels, errors)
   4385             if errors != 'ignore':
   4386                 raise KeyError(
-> 4387                     'labels %s not contained in axis' % labels[mask])
   4388             indexer = indexer[~mask]
   4389         return self.delete(indexer)

KeyError: "labels [' '] not contained in axis"

如何删除执行导出to.csv时生成的空列索引?

2 个答案:

答案 0 :(得分:1)

您反而想要index=False,就像这样:

for i in range(5,26):
    a = racimitos[racimitos['numeroLote']==i][['peso','fecha','numeroLote']]
    a.to_csv('racimitos{}.csv'.format(i), sep=',', header=True, index=False)

顺便说一句,我认为打印到.csv文件时不必包括numeroLote列,只是因为您在文件名中捕获了它的值。

这是使用groupby()的IMO效率更高的解决方案:

grouped = racimitos.groupby('numeroLote')[['peso','fecha']]
[grouped.get_group(key).to_csv('racimitos{}.csv'.format(key), index=False) for key, item in grouped]

答案 1 :(得分:-1)

您可以选择从索引1开始的所有列,而不必尝试删除该未命名的列。

a = a.iloc[:, 1:]