Étant donné deux df différents:
'UNE'
a b
2016-11-21 2 1
2016-11-22 3 4
2016-11-23 5 2
2016-11-24 6 3
2016-11-25 6 3
«B»
a b
2016-11-21 3 0
2016-11-22 1 0
2016-11-23 1 6
2016-11-24 1 5
2016-11-25 0 2
Comment puis-je créer un dataframe `` multi-niveaux '' de cette forme:
«C»
A B
a a b b
2016-11-21 2 3 1 0
2016-11-22 3 1 4 0
2016-11-23 5 1 2 6
2016-11-24 6 1 3 5
2016-11-25 6 0 3 2
* index est un objet 'datatime'
Merci
Utilisez concat
:
df = pd.concat([A, B], keys=('A','B'), axis=1)
print (df)
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2
Et pour les niveaux de tri, ajoutez sort_index
:
df = pd.concat([A, B], keys=('A','B'), axis=1).sort_index(axis=1, level=1)
print (df)
A B A B
a a b b
2016-11-21 2 3 1 0
2016-11-22 3 1 4 0
2016-11-23 5 1 2 6
2016-11-24 6 1 3 5
2016-11-25 6 0 3 2
Ce n'est pas recommandé, mais possible:
df = pd.concat([A, B], keys=('A','B'), axis=1)
cols = df.columns.get_level_values(0)
df = df.sort_index(axis=1, level=1)
df.columns = [cols, df.columns.get_level_values(1)]
print (df)
A B
a a b b
2016-11-21 2 3 1 0
2016-11-22 3 1 4 0
2016-11-23 5 1 2 6
2016-11-24 6 1 3 5
2016-11-25 6 0 3 2
car alors est un problème de sélection de colonne, car les noms de colonne en double:
print (df['A'])
a a
2016-11-21 2 3
2016-11-22 3 1
2016-11-23 5 1
2016-11-24 6 1
2016-11-25 6 0
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots