Подтвердить что ты не робот

Python Pandas - Удаление нескольких рядов из фрейма данных с помощью одной команды

Короче... У меня есть кадр данных Python Pandas, который считывается из файла Excel с помощью "read_table". Я хотел бы сохранить горстку серии из данных и очистить остальные. Я знаю, что я могу просто удалить то, что мне не нужно по одному, используя "del data ['SeriesName'] ', но я предпочел бы указать, что сохранить, а не указывать, что нужно удалить.

Если самый простой ответ - скопировать существующий кадр данных в новый фрейм данных, который содержит только серию, которую я хочу, а затем удалить существующий фрейм целиком, я был бы удовлетворен этим решением... но если это действительно, лучший способ, может ли кто-нибудь пройти через меня?

TIA... Я новичок в Pandas.:)

4b9b3361

Ответ 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. Это ускоряет процесс загрузки.