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?
OriginalL'auteur Thomas Matthew | 2016-04-13
Vous devez vous connecter pour publier un commentaire.
Le problème a été l'argument
index_col=0
était le début de la colonne de l'indexation sur les noms de gènes:Ci-dessus dataframe terminé à 2073, qui, avec 1-l'indexation en fonction avec l'argument qui précède, a été 2073 éléments: un élément de moins que mon réparé en-tête. Cela a généré le message d'erreur suivant:
ValueError: Length mismatch: Expected axis has 2073 elements, new values have 2074 elements
Alors que le même
read_csv
de commande avecindex_col=None
recevoir son propre index numérique, en mettant l' (dans ce cas, les noms des gènes) dans le dataframe d'être de simples étiquettes:Ci-dessus dataframe terminé à la colonne nombre 2073, qui est 2074 éléments avec zéro indexation en fonction: de la même longueur que mon réparé en-tête de! Problème résolu:
OriginalL'auteur Thomas Matthew