2017-08-30 5 views
0

J'ai deux trames de données avec le même nombre de lignes: 1434, et je voudrais les concaténer entre l'axe 1:Pandas concat résultant dans des rangées NaN?

res = pd.concat([df_resolved, df1], axis=1) 

Les deux trames de données n'ont pas de colonnes qui ont le même nom . Je voudrais simplement les rejoindre comme:

df1:  df2: 
col1 col2 | col3 col4 
1 0 | 9 0 
6 0 | 0 0 

= 
concatenated_df: 
col1 col2 col3 col4 
1 0 9 0 
6 0 0 0 

Cela fonctionne très bien sur un petit exemple comme celui-ci, mais pour une raison quelconque, je finis avec plusieurs lignes NaN si je l'essayer sur mon jeu de données d'origine, ce qui est trop grand pour moi de superviser (j'essaie de joindre 1434x24 et 1434x17458 cadres de données en forme). Donc, le résultat est un peu comme:

concatenated_df: 
col1 col2 col3 col4 
col1 col2 col3 col4 
1 0 9 0 
6 0 0 0 
NaN NaN 0 0 

Mais je ne vois pas pourquoi. Avez-vous des idées sur la façon dont cela peut se produire? J'ai essayé de renommer toutes les colonnes dans le cadre de données plus petit en ajoutant une chaîne _xyz aux noms de colonnes, mais le problème reste le même.

+0

https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples – Wen

Répondre

1

J'ai déjà eu le même problème, quand je la formation et généré test set.This est ma solution, mais je ne sais pas pourquoi pd.concat ne fonctionne pas dans cette situation aussi ...

l1=df.values.tolist() 
l2=df_resolved.values.tolist() 
for i in range(len(l1)): 
    l1[i].extend(l2[i]) 

df=pd.DataFrame(l1,columns=df.columns.tolist()+df_resolved.columns.tolist()) 
+0

Je t'aime tellement en ce moment! : D –

+0

@lte__ mec, j'ai encore le même problème avec vous pd.concat fonctionne ... T_T – Wen