我正在尝试创建一个嵌套的JSON块,遇到了这个很棒的解决方案Pandas grouping by multiple columns to get a multi nested Json:
test = [df.groupby('cat_a')\
.apply(lambda x: x.groupby('cat_b')\
.apply(lambda x: [x.groupby('cat_c')
.apply(lambda x: x[['participants_actual','participants_registered']].to_dict('r')
).to_dict()]
).to_dict()
).to_dict()]
import json
json_res = list(map(json.dumps, test))
这对我的用例很有效。但是,由于我不能在所有情况下控制 Dataframe ,可能不止这里提到的三个级别。
我可以很容易地想象得到的水平如下:
for c in cols[:-2]:
.... perform level gropuping
然而,由于lamba和apply函数都是上一级的函数,我不确定如何在for循环中编写这样的语句。
有没有一条途径可以使这一陈述更有活力?
2条答案
按热度按时间efzxgjgh1#
将 Dataframe 的索引设置为要嵌套的列,并同时按所有这些列进行分组。创建一个helper函数,根据键序列设置嵌套字典,并将其应用于每个组的键。
group.to_dict("records")
为每个嵌套字典中的剩余列提供字典列表。xqkwcwgp2#
你试过让它递归吗?