我有以下数据框:
列 numeroLote 在5
到25
值之间。
我想在 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)
然后,我得到类似于以下数据集:
会生成另一列,就像上面红色框中所包围的一样……
我尝试通过以下方式删除此列:
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
时生成的空列索引?
答案 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:]