Deleta在熊猫中使用'del'命令连续

时间:2019-10-11 12:47:13

标签: python pandas

阅读pandas.dataframe.drop后,

可以通过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

尝试删除带有del的rwo时,它将报告错误

#+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 个答案:

答案 0 :(得分:1)

您无法删除带有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也可以工作。