在列顶部添加标签/多索引

Chr*_*les 6 python dataframe pandas

上下文:我想在列顶部添加一个新的多索引/行。例如,如果我有这个数据框:

tt = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
Run Code Online (Sandbox Code Playgroud)

期望的输出:如何才能将“Table X”添加到 A、B 和 C 列的顶部?

   Table X
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
Run Code Online (Sandbox Code Playgroud)

可能的解决方案(?):我正在考虑转置数据帧,添加多索引,然后再次转置它,但不确定如何做到这一点,而不必手动编写数据帧列(我已经检查了其他关于这也是)

谢谢你!

Chr*_*les 5

同时我也发现了这个解决方案:

tt = pd.concat([tt],keys=['Table X'], axis=1)
Run Code Online (Sandbox Code Playgroud)

这也产生了所需的输出

  Table X
        A  B  C
0       1  4  7
1       2  5  8
2       3  6  9
Run Code Online (Sandbox Code Playgroud)


dro*_*ebi 2

如果你想要一个像你写的那样的数据框,你需要一个Multiindex data frame,试试这个:

import pandas as pd

# you need a nested dict first 
dict_nested = {'Table X': {'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]}}

# then you have to reform it 
reformed_dict = {}
for outer_key, inner_dict in dict_nested.items():
    for inner_key, values in inner_dict.items():
        reformed_dict[(outer_key, inner_key)] = values
  
# last but not least convert it to a multiindex dataframe
multiindex_df = pd.DataFrame(reformed_dict)

print(multiIndex_df)
# >>   Table X      
# >>         A  B  C
# >> 0       1  4  7
# >> 1       2  5  8
# >> 2       3  6  9
Run Code Online (Sandbox Code Playgroud)