Используйте 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
И для сортировки уровней добавьте 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
Это нерекомендуется, но возможно:
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
, поскольку в этом случае возникает проблема выбора столбца, поскольку дублированные имена столбцов:
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