簡體   English   中英

如何在使用 pandas 讀取文件時刪除 csv 文件的特定列?

[英]How to drop a specific column of csv file while reading it using pandas?

在使用pandas加載 csv 時,我需要刪除名稱為 label 的 我正在閱讀 csv 如下,並希望在其中添加參數來這樣做。 謝謝。

pd.read_csv("sample.csv")

閱讀 csv 后我知道該怎么做:

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

如果您事先知道列名,則可以通過設置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'])

從您的CSV使用列標題pd.read_csvnrows=1 ,則做后續的讀取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'}))

使用df= df.drop(['ID','prediction'],axis=1)為我完成了這項工作。 我刪除了“ID”和“預測”列。 確保將它們放在方括號中,例如['column1','column2'] 需要其他復雜的解決方案。

可以在閱讀時刪除列。

columns_to_be_removed = ['a', 'b']

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

這個帶有兩行代碼的答案將真正幫助您。 您甚至可以在創建 CSV 時動態刪除列名。

https://stackoverflow.com/a/71440977/12819393

read_csv()唯一可用於選擇所用列的參數是usecols 根據文檔, usecols接受類似列表或可調用的。 因為您只知道要刪除的列,所以不能使用要保留的列的列表。 所以使用一個可調用的:

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

如果你有一個不想使用的列名列表,你當然可以說x not in ['unwanted', 'column', 'names']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM