如何在使用 pandas 读取 csv 文件时删除特定列?

新手上路,请多包涵

在使用 pandas 加载 csv 时,我需要删除带有标签 名称。我正在按如下方式阅读 csv,并希望在其中添加参数。谢谢。

pd.read_csv("sample.csv")

阅读 csv 后我知道要这样做:

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

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

阅读 666
2 个回答

如果您之前知道列名,则可以通过设置 usecols 参数来实现

当您知道要使用哪些列时

假设您有包含列 ['id','name','last_name'] 的 csv 文件,而您只需要 ['name','last_name'] 。你可以这样做:

 import pandas as pd
df = pd.read_csv("sample.csv", usecols = ['name','last_name'])

当你想要前 N 列时

如果你不知道列名但你想要数据框中的前 N 列。你可以这样做

import pandas as pd
df = pd.read_csv("sample.csv", usecols = [i for i in range(n)])

编辑

当您知道要删除的列的名称时

# Read column names from file
cols = list(pd.read_csv("sample_data.csv", nrows =1))
print(cols)

# Use list comprehension to remove the unwanted column in **usecol**
df= pd.read_csv("sample_data.csv", usecols =[i for i in cols if i != 'name'])

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

read_csv() 的唯一参数,您可以用来选择您使用的列是 usecols 。根据文档, usecols 接受类似列表或可调用的。因为您只知道要删除的列,所以不能使用要保留的列的列表。所以使用一个可调用的:

 pd.read_csv("sample.csv",
            usecols=lambda x: x != 'name'
            )

如果您有不想使用的列名列表,您当然可以说 x not in ['unwanted', 'column', 'names']

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

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