Я работаю с тысячами строк данных, пытаясь сузить поиск определенных зерен. Для этого у меня есть столбец «Актив» с примерно 20 различными значениями, из которых мне нужно получить сумму всех строк в соседнем столбце «Загрузить».
Я хотел бы вырезать ненужные строки из моего набора данных. Для начала я пометил все дополнительные активы как 'cut' (как показано в примере ниже), чтобы я мог управлять одной командой .drop. Вот как это закодировано:
df14['Asset'] = df14["Asset"].str.replace('BEANS', 'cut')
df14.drop("cut", axis=0)
set(df14['Asset'])
Это ошибка, которую я получил:
KeyError Traceback (most recent call last)
<ipython-input-593-40006512df80> in <module>
----> 1 df14.drop("cut", axis=0)
2 set(df14['Asset'])
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in drop(self, labels, axis, index, columns, level, inplace, errors)
4100 level=level,
4101 inplace=inplace,
-> 4102 errors=errors,
4103 )
4104
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in drop(self, labels, axis, index, columns, level, inplace, errors)
3912 for axis, labels in axes.items():
3913 if labels is not None:
-> 3914 obj = obj._drop_axis(labels, axis, level=level, errors=errors)
3915
3916 if inplace:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in _drop_axis(self, labels, axis, level, errors)
3944 new_axis = axis.drop(labels, level=level, errors=errors)
3945 else:
-> 3946 new_axis = axis.drop(labels, errors=errors)
3947 result = self.reindex(**{axis_name: new_axis})
3948
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexes\base.py in drop(self, labels, errors)
5338 if mask.any():
5339 if errors != "ignore":
-> 5340 raise KeyError("{} not found in axis".format(labels[mask]))
5341 indexer = indexer[~mask]
5342 return self.delete(indexer)
KeyError: "['cut'] not found in axis"
Я пробовал несколько команд для удаления указанных строк, например:
df14.drop(["cut"], inplace = True)
df14[~df14['Asset'].isin(to_drop)]
df14[df14['Asset'].str.contains('cut', na = True)]
И все они приносят одинаковые плоды.
Когда я кодирую
df14 = df14[~df14["Asset"].str.contains('BEANS')]
Он не удаляет номер загрузки, следующий за следующим столбцом, из моих окончательных расчетов .
Можно ли удалить все строки данных с определенной меткой, чтобы я мог обрезать их с 20 до 7 активов?
Спасибо