簡體   English   中英

在列頂部添加標簽/多索引

[英]Add label/multi-index on top of columns

上下文:我想在列的頂部添加一個新的多索引/行。 例如,如果我有這個 dataframe:

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

所需的 Output:我如何才能在 A、B 和 C 列的頂部添加“表 X”?

   Table X
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

可能的解決方案(?):我正在考慮轉置 dataframe,添加多索引,然后再次轉回,但不知道如何做到這一點而不必手動編寫 dataframe 列(我已經檢查了其他關於這也是)

謝謝!

同時我也發現了這個解決方案:

tt = pd.concat([tt],keys=['Table X'], axis=1)

這也產生了所需的 output

  Table X
        A  B  C
0       1  4  7
1       2  5  8
2       3  6  9

如果你想要一個像你寫的那樣的數據框,你需要一個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

您可以使用pd.MultiIndex.from_tuples()設置/更改具有多索引的 dataframe 的列:

tt.columns = pd.MultiIndex.from_tuples((
    ('Table X', 'A'), ('Table X', 'B'), ('Table X', 'C')))

結果tt ):

    Table X
    A   B   C
0   1   4   7
1   2   5   8
2   3   6   9

附加組件,因為這些是多索引級別,您可以稍后更改它們:

tt.columns.set_levels(['table_x'],level=0,inplace=True)
tt.columns.set_levels(['a','b','c'],level=1,inplace=True)
        table_x
        a   b   c
    0   1   4   7
    1   2   5   8
    2   3   6   9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM