C'est probablement facile, mais j'ai les données suivantes:
Dans la trame de données 1:
index dat1
0 9
1 5
Dans la trame de données 2:
index dat2
0 7
1 6
Je veux un bloc de données avec le formulaire suivant:
index dat1 dat2
0 9 7
1 5 6
J'ai essayé d'utiliser la méthode append
, mais j'obtiens une jointure croisée (c'est-à-dire un produit cartésien).
Quelle est la bonne façon de faire cela?
Il semble en général que vous cherchiez simplement une jointure:
> dat1 = pd.DataFrame({'dat1': [9,5]})
> dat2 = pd.DataFrame({'dat2': [7,6]})
> dat1.join(dat2)
dat1 dat2
0 9 7
1 5 6
Vous pouvez aussi utiliser:
dat1 = pd.concat([dat1, dat2], axis=1)
Les deux méthodes join () et concat () pourraient résoudre le problème. Cependant, il y a un avertissement que je dois mentionner: Réinitialisez l'index avant de vous joindre ou concattez si vous essayez de gérer un cadre de données en sélectionnant des lignes dans un autre DataFrame.
Un exemple ci-dessous montre un comportement intéressant de jointure et concatte:
dat1 = pd.DataFrame({'dat1': range(4)})
dat2 = pd.DataFrame({'dat2': range(4,8)})
dat1.index = [1,3,5,7]
dat2.index = [2,4,6,8]
# way1 join 2 DataFrames
print(dat1.join(dat2))
# output
dat1 dat2
1 0 NaN
3 1 NaN
5 2 NaN
7 3 NaN
# way2 concat 2 DataFrames
print(pd.concat([dat1,dat2],axis=1))
#output
dat1 dat2
1 0.0 NaN
2 NaN 4.0
3 1.0 NaN
4 NaN 5.0
5 2.0 NaN
6 NaN 6.0
7 3.0 NaN
8 NaN 7.0
#reset index
dat1 = dat1.reset_index(drop=True)
dat2 = dat2.reset_index(drop=True)
#both 2 ways to get the same result
print(dat1.join(dat2))
dat1 dat2
0 0 4
1 1 5
2 2 6
3 3 7
print(pd.concat([dat1,dat2],axis=1))
dat1 dat2
0 0 4
1 1 5
2 2 6
3 3 7