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

2024-09-28 21:00:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用pandas加载csv时,我需要删除带有labelname列。我正在阅读csv如下,并想在它里面添加参数这样做。谢谢。

pd.read_csv("sample.csv")

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

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

Tags: csvsamplenamepandasdfread参数事情
2条回答

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

当您知道要使用哪些列时

假设您有一个csv文件,其中有['id','name','last_name']列,您只需要['name','last_name']。您可以按以下步骤操作:

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

需要前N列时

如果您不知道列名,但需要dataframe中的前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'])

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

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

或者,您也可以使用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'}))

相关问题 更多 >