Удалите строку с командой «del» в пандах - PullRequest
0 голосов
/ 11 октября 2019

После прочтения pandas.dataframe.drop ,

столбец может быть удален по капле или del

#+begin_src ipython :session alinbx :results output
import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(12).reshape(3, 4),
                  columns=['A', 'B', 'C', 'D'])
print(df, '\n'+'--'*50)
# Drop columns
print(df.drop(['B', 'C'], axis=1), '\n'+'--'*50)
del df['A']
# Drop a row by index
print(df.drop([0, 1]), '\n'+'--'*50)
print(df.drop([0, 1], axis=0))
#+end_src

#+RESULTS:
#+begin_example
   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11 
----------------------------------------------------------------------------------------------------
   A   D
0  0   3
1  4   7
2  8  11 
----------------------------------------------------------------------------------------------------
   B   C   D
2  9  10  11 
----------------------------------------------------------------------------------------------------
   B   C   D
2  9  10  11
#+end_example

При попытке удалить rwo с помощью del,сообщать об ошибке

#+begin_src ipython :session alinbx :results output
del df.iloc[0, :]
#+end_src

AttributeErrorTraceback (most recent call last)
<ipython-input-20-4fdbabf9cb4f> in <module>
----> 1 del df.iloc[0, :]

AttributeError: __delitem__

Как можно удалить строку с 'del`

1 Ответ

1 голос
/ 11 октября 2019

Невозможно удалить строку с del, поскольку строки, возвращаемые .loc или .iloc, являются копиями DataFrame, поэтому их удаление не повлияет на ваши фактические данные.

Замечание:

>>> df['A'] is df['A']
True
>>> df.loc[0] is df.loc[0]
False
>>> df.iloc[0, :] is df.loc[0, :]
False

del df['A'] работает, потому что он использует __getitem__ для извлечения фактического объекта, поэтому, удалив ключ 'A', он также удалит соответствующие данные столбцафрейм.

Чтобы удалить строки, вам нужно вместо этого df.drop(index=0) или df.drop([0], axis=0). Чтобы удалить несколько строк, df.drop(index=range(...)) также будет работать, предполагая, что ваши индексы int s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...