如何通过分组列将Pandas数据框转换为数据框字典



我有一个从3D数据构建的DataFrame,其形式为:

: A, B

: 1., 1。b、2。2. a, b

我正试图将其解压缩到一个映射{a, B}到索引{1,2}和列{a, B}的DataFrames的字典

输入例子:

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')

目标输出:

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和unstack:

aa.columns = pd.MultiIndex.from_tuples([a.split('.') for a in aa.columns])
out = {k:v.unstack() for k,v in aa.iterrows()}

输出:

{'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}

相关内容

  • 没有找到相关文章

最新更新