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
或元组是不可能的