如何使用pandas读取特定的csv文件列?

Ano*_*rge 11 python csv dataframe pandas

我需要在加载csv时删除带有标签名称.我正在按如下方式阅读csv,并希望在其中添加参数来执行此操作.谢谢.pandas

pd.read_csv("sample.csv")

我知道在阅读csv后要做的事情:

df.drop('name', axis=1)
Run Code Online (Sandbox Code Playgroud)

jal*_*ezp 42

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

pd.read_csv("sample.csv", usecols=lambda x: x != "name")
Run Code Online (Sandbox Code Playgroud)

当然,您可以说x not in ["unwanted", "column", "names"]您是否有不想使用的列名称列表。

  • 这比接受的选项干净得多 (5认同)

Aks*_*kar 20

如果您知道先前的列名,可以通过设置usecols参数来完成

当您知道要使用哪些列时

假设你有csv文件列['id','name','last_name'],你想要的只是['name','last_name'].你可以这样做:

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

当你想要前N列

如果您不知道列名,但是您想从数据帧中获得前N列.你可以做到

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

编辑

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

# 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'])
Run Code Online (Sandbox Code Playgroud)


Ege*_*Ege 7

使用df= df.drop(['ID','prediction'],axis=1)对我来说很有效。我删除了“ID”和“预测”列。确保将它们放在方括号中,例如['column1','column2']. 不需要其他复杂的解决方案。


cs9*_*s95 6

使用pd.read_csvwith从 CSV 中获取列标题nrows=1,然后执行后续读取 withusecols以提取除要省略的列之外的所有内容。

headers = [*pd.read_csv('sample.csv', nrows=1)]
df = pd.read_csv('sample.csv', usecols=[c for c in headers if c != 'name']))
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用 CSV 模块非常有效地执行相同的操作(仅读取标题),

import csv

with open("sample.csv", 'r') as f:
    header = next(csv.reader(f))
    # For python 2, use
    # header = csv.reader(f).next()

df = pd.read_csv('sample.csv', usecols=list(set(header) - {'name'}))
Run Code Online (Sandbox Code Playgroud)