[英]How to turn dictionary into a dataframe with only a subset of columns using pandas?
[英]How to turn a Pandas Dataframe into a Dictionary of Dataframes by grouping columns
我有一個 DataFrame,它是根據 3D 數據構建的,並采用以下形式:
索引: A, B
列:1.a、1.b、2.a、2.b
我正在嘗試將其解壓到字典中,將 {A, B} 映射到具有索引 {1,2} 和列 {a,b} 的數據幀
示例輸入:
aa = pandas.DataFrame({'1.a':[1,2], '1.b':[3,4], '2.a':[5,6], '2.b':[7,8], 'index':['A', 'B']}).set_index('index')
目標 output:
bb = {'A': pandas.DataFrame({'a':[1,5], 'b':[3,7], 'index':[1,2]}), 'B': pandas.DataFrame({'a':[2,6], 'b':[4,8], 'index':[1,2]}) }
有什么想法嗎?
看起來您可以將列名稱更改為 MultiIndex 並取消堆疊:
aa.columns = pd.MultiIndex.from_tuples([a.split('.') for a in aa.columns])
out = {k:v.unstack() for k,v in aa.iterrows()}
Output:
{'A': a b
1 1 3
2 5 7,
'B': a b
1 2 4
2 6 8}
拆分列並轉換為 MultiIndex; 堆疊后在 MultiIndex 索引的第一級上進行 groupby 並創建字典
aa.columns = aa.columns.str.split(".", expand=True)
aa = aa.stack(level=0).rename_axis([None, "index"])
index = aa.index.get_level_values(0)
dict(list(aa.droplevel(0).groupby(index)))
{'A': a b
index
1 1 3
2 5 7,
'B': a b
index
1 2 4
2 6 8}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.