[英]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.