web-dev-qa-db-ja.com

パンダを使用して読み取り中にcsvファイルの特定の列を削除するにはどうすればよいですか?

pandasを使用してcsvをロードするときに、ラベルnamecolumnを削除する必要があります。私は次のようにcsvを読んでいて、その中にパラメータを追加したいのです。ありがとう。

pd.read_csv("sample.csv")

私はcsvを読んだ後にこれを行うことを知っています:

df.drop('name', axis=1)
10
Anon George

列名が事前にわかっている場合は、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'])
19
AkshayNevrekar

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'}))
3
cs95