Python 组合单索引数据帧和多索引数据帧的方法,无需对单索引数据帧进行多索引
有没有一种干净简单的方法来组合多索引和单索引数据帧 也有类似的问题,但都是老问题,都有“混乱”的解决方案 我有一个单一的索引:Python 组合单索引数据帧和多索引数据帧的方法,无需对单索引数据帧进行多索引,python,pandas,dataframe,Python,Pandas,Dataframe,有没有一种干净简单的方法来组合多索引和单索引数据帧 也有类似的问题,但都是老问题,都有“混乱”的解决方案 我有一个单一的索引: df1 = pd.DataFrame({'single': [10,11,12], 'double': [7,8,9]}) single double 0 10 7 1 11 8 2 12 9 我希望将其组合到一系列多索引数据框中,其中的空列具有不同的列和子列索引: df2 = pd.Data
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
我只需使用
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
我认为不将多索引和
simple
索引转换为Multiindex
或元组是不可能的