web-dev-qa-db-fra.com

KeyError: "Aucun de [['', '']] n'est dans les [colonnes]" pandas python

Je voudrais couper deux colonnes dans mon bloc de données.

Voici mon code pour ce faire:

import pandas as pd
df = pd.read_csv('source.txt',header=0)
cidf=df.loc[:,['vocab','sumCI']]
print(cidf)

Voici un échantillon de données:

ID  vocab   sumCI   sumnextCI   new_diff
450      statu    3.0        0.0       3.0
391     provid    4.0        1.0       3.0
382  prescript    3.0        0.0       3.0
300   lymphoma    2.0        0.0       2.0
405      renew    2.0        0.0       2.0

** Tout d'abord, j'ai eu cette erreur: **

KeyError: “None of [['', '']] are in the [columns]”'

Ce que j'ai essayé:

  • J'ai essayé de mettre un header avec index 0 lors de la lecture du fichier,
  • J'ai essayé de renommer les colonnes avec ce code:

    df.rename(columns=df.iloc[0],inplace=True)
    
  • J'ai également essayé ceci:

    df.columns = df.iloc[1]
    df=df.reindex(df.index.drop(0))
    
  • A également essayé les commentaires dans ce lien

Aucune des réponses ci-dessus n'a résolu le problème.

8
sariii

D'après l'impression que vous avez publiée, il semble que vous ayez des espaces blancs comme délimiteurs. pd.read_csv lira en utilisant , comme séparateur par défaut, vous devez donc le déclarer explicitement:

pd.read_csv('source.txt',header=0, delim_whitespace=True)
5
rafaelc

il suffit d'écrire du code pour créer un nouveau fichier CSV et d'utiliser un nouveau fichier

 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
 pd.read_csv('source.txt',header=0, delim_whitespace=True)
 headers = ['ID','vocab','sumCI','sumnextCI','new_diff']
 df.columns = headers 
 df.to_csv('newsource.txt')
2
sejpalsinh jadeja

Vous pouvez essayer de faire ceci:

pd.read_csv('source.txt',header=0, delim_whitespace=True)

Si vous avez des espaces blancs dans les données, vous obtiendrez une erreur, donc delim_whitespace est inclus pour supprimer ceux-ci au cas où ils seraient dans les données.

0
kaushik Tummalapali