协慌网

登录 贡献 社区

按列名从 pandas DataFrame 中删除列

删除 DataFrame 中的列时,我使用:

del df['column_name']

这很有效。为什么我不能使用以下?

del df.column_name

由于您可以使用df.column_name访问列 / Series,我希望这可以工作。

答案

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

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

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

要删除列而不必重新分配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

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

del df['column_name']

很难使del df.column_name只是因为 Python 中的语法限制而工作。 del df[name]被 Python 翻译成df.__delitem__(name)

使用:

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

这将就地删除一个或多个列。请注意,在 pandas v0.13 中添加了 inplace inplace=True ,并且不适用于旧版本。在这种情况下,你必须重新分配结果:

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