是否有一种干净简单的方法来组合多索引和单索引数据帧?
有些问题问类似的here和here,但是它们都比较老,并且具有“混乱”的解决方案。
我只有一个索引数据源:
df1 = pd.DataFrame({'single': [10,11,12], 'double': [7,8,9]})
single double
0 10 7
1 11 8
2 12 9
我希望将其组合到一系列具有空列的多索引数据帧中,这些空列具有不同的列和子列索引:
df2 = pd.DataFrame(columns = pd.MultiIndex.from_product([['happy'], ['very', 'not_much']]))
Empty DataFrame
Columns: [(happy, very), (happy, not_much)]
Index: []
接下来,我将其添加到上述两个数据框的组合中,依此类推:
df3 =pd.DataFrame(columns = pd.MultiIndex.from_product([['sad'], ['always', 'never']]))
Empty DataFrame
Columns: [(sad, always), (sad, never)]
Index: []
我尝试了追加和连接,但是都遇到了错误:
TypeError: Expected tuple, got str
最终目标是获得一个看起来像这样的数据框:
happy sad
single double very not_much always never
0 10 7
1 11 8
2 12 9
答案 0 :(得分:1)
我只使用concat
然后对列进行后处理:
resul = pd.concat([df1, df2, df3], axis=1, sort=False)
resul.columns = pd.MultiIndex.from_tuples(
[('', i) if isinstance(i, str) else i for i in resul.columns])
它给出了预期的结果:
happy sad
single double very not_much always never
0 10 7 NaN NaN NaN NaN
1 11 8 NaN NaN NaN NaN
2 12 9 NaN NaN NaN NaN