如何删除csv文件的特定列,同时使用Pandas阅读它?

vd2z7a6w  于 2023-04-18  发布在  其他
关注(0)|答案(6)|浏览(158)

我需要在使用pandas加载csv时删除标签为name。我正在阅读csv,如下所示,并希望在其中添加参数来完成此操作。谢谢。
pd.read_csv("sample.csv")
我在阅读csv后知道了这一点:

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

vof42yt11#

使用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'}))
wfypjpf4

wfypjpf42#

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

m0rkklqb

m0rkklqb3#

列可以在阅读本身时删除。

columns_to_be_removed = ['a', 'b']

data = pd.read_csv(sourceFileName).drop(columns_to_be_removed, axis = 'columns')
uelo1irk

uelo1irk4#

这两行代码的答案将真正帮助你。你甚至可以在创建CSV时动态删除列名。
https://stackoverflow.com/a/71440977/12819393

utugiqy6

utugiqy65#

如果您事先知道列名,则可以通过设置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"])
bvuwiixz

bvuwiixz6#

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

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

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

相关问题