Python Pandas - Удаление нескольких рядов из фрейма данных с помощью одной команды
Короче... У меня есть кадр данных Python Pandas, который считывается из файла Excel с помощью "read_table". Я хотел бы сохранить горстку серии из данных и очистить остальные. Я знаю, что я могу просто удалить то, что мне не нужно по одному, используя "del data ['SeriesName'] ', но я предпочел бы указать, что сохранить, а не указывать, что нужно удалить.
Если самый простой ответ - скопировать существующий кадр данных в новый фрейм данных, который содержит только серию, которую я хочу, а затем удалить существующий фрейм целиком, я был бы удовлетворен этим решением... но если это действительно, лучший способ, может ли кто-нибудь пройти через меня?
TIA... Я новичок в Pandas.:)
Ответы
Ответ 1
Вы можете использовать функцию DataFrame
drop
для удаления столбцов. Вы должны передать параметр axis=1
, чтобы он работал с столбцами, а не с строками. Обратите внимание, что он возвращает копию, поэтому вам нужно назначить результат новому DataFrame
:
In [1]: from pandas import *
In [2]: df = DataFrame(dict(x=[0,0,1,0,1], y=[1,0,1,1,0], z=[0,0,1,0,1]))
In [3]: df
Out[3]:
x y z
0 0 1 0
1 0 0 0
2 1 1 1
3 0 1 0
4 1 0 1
In [4]: df = df.drop(['x','y'], axis=1)
In [5]: df
Out[5]:
z
0 0
1 0
2 1
3 0
4 1
Ответ 2
В основном то же, что и ответ "Желязны" - просто указывая, что сохранить:
In [68]: df
Out[68]:
x y z
0 0 1 0
1 0 0 0
2 1 1 1
3 0 1 0
4 1 0 1
In [70]: df = df[['x','z']]
In [71]: df
Out[71]:
x z
0 0 0
1 0 0
2 1 1
3 0 0
4 1 1
* Редактировать *
Вы можете указать большое количество столбцов путем индексирования/нарезки в объект Dataframe.columns
.
Этот объект type(pandas.Index)
можно рассматривать как dict
меток столбцов (с некоторой расширенной функциональностью).
См. это расширение приведенных выше примеров:
In [4]: df.columns
Out[4]: Index([x, y, z], dtype=object)
In [5]: df[df.columns[1:]]
Out[5]:
y z
0 1 0
1 0 0
2 1 1
3 1 0
4 0 1
In [7]: df.drop(df.columns[1:], axis=1)
Out[7]:
x
0 0
1 0
2 1
3 0
4 1
Ответ 3
Вы также можете указать список столбцов, чтобы сохранить его с опцией usecols
в pandas.read_table
. Это ускоряет процесс загрузки.