web-dev-qa-db-fra.com

Comment déposer une colonne spécifique de fichier csv tout en la lisant à l'aide de pandas?

J'ai besoin de supprimer un colonne avec l'étiquette nom au moment du chargement d'un csv en utilisant pandas. Je lis csv comme suit et je veux ajouter des paramètres à l'intérieur pour le faire. Merci.

pd.read_csv("sample.csv")

Je sais cela à faire après avoir lu csv:

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

Si vous connaissez les noms des colonnes auparavant, vous pouvez le faire en définissant le paramètre usecols

Lorsque vous savez quelles colonnes utiliser

Supposons que vous ayez un fichier csv avec des colonnes ['id','name','last_name'] et vous voulez juste ['name','last_name']. Vous pouvez le faire comme ci-dessous:

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

lorsque vous voulez les N premières colonnes

Si vous ne connaissez pas les noms des colonnes mais que vous voulez les N premières colonnes de la trame de données. Vous pouvez le faire en

import pandas as pd
df = pd.read_csv("sample.csv", usecols = [i for i in range(n)])

Modifier

Lorsque vous connaissez le nom de la colonne à supprimer

# 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

Obtenez les en-têtes de colonne de votre CSV en utilisant pd.read_csv avec nrows=1, puis effectuez une lecture ultérieure avec usecols pour extraire tout sauf les colonnes que vous souhaitez omettre.

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

Alternativement, vous pouvez faire la même chose (lire uniquement les en-têtes) très efficacement en utilisant le module 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