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

del df['column_name']

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

del df.column_name

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


当前回答

使用数据帧和切片的iloc函数删除列,当我们有一个带有不需要的值的典型列名时:

df = df.iloc[:,1:] # Removing an unnamed index column

这里0是默认行,1是第一列,因此:,1:是删除第一列的参数。

其他回答

在Pandas中执行此操作的最佳方法是使用drop:

df = df.drop('column_name', axis=1)

其中1是轴号(0表示行,1表示列。)

或者,drop()方法接受索引/列关键字作为指定轴的替代方法。所以我们现在可以做:

df = df.drop(columns=['column_nameA', 'column_nameB'])

这是在v0.21.0中引入的(2017年10月27日)

要删除列而不必重新分配df,可以执行以下操作:

df.drop('column_name', axis=1, inplace=True)

最后,要按列编号而不是按列标签删除,请尝试删除,例如,第1列、第2列和第4列:

df = df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index

同时使用列的“text”语法:

df.drop(['column_nameA', 'column_nameB'], axis=1, inplace=True)

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

假设df是一个数据帧。

要删除的列=列0

代码:

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

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

代码:

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

在Pandas 0.16.1+中,只有当列按照eiTan LaVi发布的解决方案存在时,才能删除它们。在此版本之前,您可以通过条件列表理解获得相同的结果:

df.drop([col for col in ['col_name_1','col_name_2',...,'col_name_N'] if col in df],
        axis=1, inplace=True)

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

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

正如您所猜测的,正确的语法是

del df['column_name']

由于Python中的语法限制,很难使del df.column_name正常工作。deldf[name]被翻译成df__delitem__(name)在Python的封面下。