要删除DataFrame中的列,我可以成功使用:

del df['column_name']

但为什么我不能使用以下选项?

del df.column_name

由于可以通过df.column_name访问该系列,所以我希望这能奏效。


当前回答

点语法在JavaScript中有效,但在Python中无效。

Python:del df['column_name]JavaScript:del df['column_name]或del df.column_name

其他回答

Use:

columns = ['Col1', 'Col2', ...]
df.drop(columns, inplace=True, axis=1)

这将在位删除一个或多个列。请注意,inplace=True是在panda v0.13中添加的,在旧版本中不起作用。在这种情况下,您必须重新分配结果:

df = df.drop(columns, axis=1)

总是使用[]符号是一个很好的做法。一个原因是属性表示法(df.column_name)不适用于编号索引:

In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]])

In [2]: df[1]
Out[2]:
0    2
1    5
Name: 1

In [3]: df.1
  File "<ipython-input-3-e4803c0d1066>", line 1
    df.1
       ^
SyntaxError: invalid syntax

从版本0.16.1开始,您可以

df.drop(['column_name'], axis = 1, inplace = True, errors = 'ignore')

我们可以通过drop()方法删除或删除一个或多个指定列。

假设df是一个数据帧。

要删除的列=列0

代码:

df = df.drop(column0, axis=1)

要删除多个列col1、col2、,coln,我们必须在列表中插入所有需要删除的列。然后通过drop()方法删除它们。

代码:

df = df.drop([col1, col2, . . . , coln], axis=1)

Pandas 0.21+答案

Pandas 0.21版略微更改了drop方法,以包括索引和列参数,以匹配重命名和重新索引方法的签名。

df.drop(columns=['column_a', 'column_c'])

就我个人而言,我更喜欢使用axis参数来表示列或索引,因为它是几乎所有panda方法中使用的主要关键字参数。但是,现在您在0.21版中增加了一些选择。