![](/img/trans.png)
[英]How to drop multiple columns without using column names while reading excel file in pandas?
[英]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_csv
與nrows=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 時動態刪除列名。
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.