从 Pandas DataFrame 中删除一列

新手上路,请多包涵

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

 del df['column_name']

但是为什么我不能使用以下内容?

 del df.column_name

由于可以以 df.column_name 访问列/系列,因此我希望这可以工作。

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 804
2 个回答

如您所料,正确的语法是

del df['column_name']

由于 Python 中的句法限制,很难使 del df.column_name 工作。 del df[name] 被Python翻译成 df.__delitem__(name)

原文由 Wes McKinney 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 df = df.drop('column_name', axis=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

还使用列的“文本”语法:

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

注意:v0.21.0 (2017 年 10 月 27 日)中引入, drop() 方法接受索引/列关键字作为指定轴的替代方法。

所以我们现在可以这样做:

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

原文由 LondonRob 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题