Je lis mes données
import pandas as pd
df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t')
print df
et obtenir:
id text
0 361.273 text1...
1 374.350 text2...
2 374.350 text3...
Comment puis-je supprimer la colonne id
du cadre de données ci-dessus?. J'ai essayé ce qui suit:
import pandas as pd
df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t')
print df.drop('id', 1)
Mais il soulève cette exception:
ValueError: labels ['id'] not contained in axis
pour supprimer réellement la colonne
del df['id']
Ou df.drop('id', 1)
aurait dû fonctionner si la colonne transmise correspond exactement
Cependant, si vous n'avez pas besoin de supprimer la colonne, vous pouvez simplement sélectionner la colonne d'intérêt de la manière suivante:
In [54]:
df['text']
Out[54]:
0 text1
1 text2
2 textn
Name: text, dtype: object
Si vous ne l’avez jamais voulu au départ, vous passez une liste de colonnes à read_csv
En tant que paramètre usecols
:
In [53]:
import io
temp="""id text
363.327 text1
366.356 text2
37782 textn"""
df = pd.read_csv(io.StringIO(temp), delimiter='\s+', usecols=['text'])
df
Out[53]:
text
0 text1
1 text2
2 textn
En ce qui concerne votre erreur, c’est que 'id'
Ne figure pas dans vos colonnes, qu’il est orthographié différemment ou qu’il contient des espaces. Pour vérifier cela, regardez la sortie de print(df.columns.tolist())
, ceci affichera une liste des colonnes et montrera si vous avez des espaces de début/fin.
df.drop(colname, axis=1)
(ou del df[colname]
) est la méthode correcte à utiliser pour supprimer une colonne.
Si un ValueError
est levé, cela signifie que le nom de la colonne n’est pas exactement ce que vous pensez.
Vérifier df.columns
pour voir ce que Pandas pense être les noms des colonnes).
Le meilleur moyen de supprimer une colonne dans pandas est d'utiliser drop :
df = df.drop('column_name', axis=1)
où 1
est le nombre axe (0
pour les lignes et 1
pour les colonnes.)
Pour supprimer la colonne sans avoir à réaffecter df
, vous pouvez procéder comme suit:
df.drop('column_name', axis=1, inplace=True)
Enfin, pour déposer par colonne nombre au lieu de colonne étiquette , essayez cette. Pour supprimer, par exemple les 1ère, 2ème et 4ème colonnes:
df.drop(df.columns[[0, 1, 3]], axis=1) # df.columns is zero-based pd.Index
Exceptions:
Si un numéro ou une étiquette de colonne incorrect est demandé, une erreur sera générée. Pour vérifier le nombre de colonnes, utilisez df.shape[1]
Ou len(df.columns.values)
et pour vérifier les étiquettes de colonne, utilisez df.columns.values
.
Une exception serait soulevée La réponse était basée sur @ (Londres) réponse et laissée ici pour aider les futurs visiteurs de cette page.