Longueur erreur d'incompatibilité lors de l'attribution de nouvelles étiquettes de colonne dans les pandas dataframe

L'onglet fichier, je travaille avec est absent de la finale de la colonne nom. Lorsque je tente de réparer l'en-tête par l'ajout de la valeur manquante, j'obtiens une erreur d'incompatibilité. Voici un exemple pour illustrer le problème:

jouet exemple

Il devrait y avoir un " comme le dernier élément de la première liste:

missingcol = [[gene, cell_1, '', cell_2]
               [MYC, 5.0, P, 4.0, A]
               [AKT, 3.0, A, 1.0, P]]

Pour résoudre ce problème, j'ai lu la première ligne, ajouté un '', chargé missingcol dans une pandas dataframe avec header=None et le saut de la première ligne, et de redéfinir les noms de colonne avec l'en-tête modifié, comme suit:

fullheader = missingcol[0].append('')
fullheader = missingcol[0]

missingcol_dropheader = missingcol[1:]

df = pd.DataFrame(missingcol_dropheader, columns=fullheader)
df

Qui me donne l'erreur:

AssertionError: 4 columns passed, passed data had 5 columns

Dernière, j'ai vérifié, le nouveau fullheader n'a, en fait, ont 5 éléments pour faire correspondre les cinq éléments de la trame de données. Ce qui est à l'origine de cette suite d'incompatibilité et comment puis-je résoudre ce problème?

exemple réel

J'obtiens une erreur similaire quand j', répétez les mêmes étapes, mais lors de l'utilisation de read_csv méthode avec mon scénario de test. - Je ignorer l'en-tête à la ligne 0, et les trois lignes vides de lignes 1-3, et déposer indésirables première colonne, mais sinon, c'est la même chose:

with open('CCLE_Expression_Entrez_2012-10-18.res', 'r') as f:
    header = f.readline().strip().split('\t')
header.append('') # missing empty colname over last A/P col

rnadf = pd.read_csv('CCLE_Expression_Entrez_2012-10-18.res', delimiter='\t', index_col=0, header=None, skiprows=[0,1,2,3])  
rnadf.columns = header
rnadf.drop([], axis=1, inplace=True)
rnadf.columns = header

ValueError: Length mismatch: Expected axis has 2073 elements, new values have 2074 elements

Très semblable erreur de cas de test. Ce qui fait de cette erreur différent du cas de test et comment puis-je résoudre ce problème?

Je ne peux pas reproduire l'erreur. Veuillez fournir un petit, autonome exemple qui illustre le problème.

OriginalL'auteur Thomas Matthew | 2016-04-13