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)
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'])
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'}))