这个 github 问题描述了合并具有混合层次结构的数据帧,并提供了将层次结构展平为元组的解决方案。
df = pd.DataFrame([(1, 2, 3), (4, 5, 6)], columns=['a', 'b', 'c'])
new_df = df.groupby(['a']).agg({'b': [np.mean, np.sum]})
other_df = df = pd.DataFrame([(1, 2, 3), (7, 10, 6)], columns=['a', 'b', 'd'])
other_df.set_index('a', inplace=True)
print new_df
print other_df
p = pd.merge(new_df, other_df, left_index=True, right_index=True)
print p
输出:
b
mean sum
a
1 2 2
4 5 5
b d
a
1 2 3
7 10 6
(b, mean) (b, sum) b d
a
1 2 2 2 3
但是我想保持层次结构,结果如下:
b b d
mean sum
x
y . . . .
我只是在这里制作了值点,因为它们在这种情况下并没有真正意义,但希望这个想法很清楚......任何帮助都非常感激......