gpt4 book ai didi

python - Pandas:Groupby 并使用剩余的列名和值创建字典

转载 作者:行者123 更新时间:2023-12-05 09:34:14 27 4
gpt4 key购买 nike

下面是我的df:

In [425]: df
Out[425]:
a b c d
0 abc 1 1 True
1 abd 1 1 False
2 abe 1 2 False
3 abf 1 2 True
4 abg 2 2 True

我想对 bc 列进行分组,并使用剩余的列名称及其值创建字典。

预期输出:

[
{
"b": 1,
"c": 1,
"attr":[
{
"a": "abc",
"d": True
},
{
"a": "abd",
"d": False
}
]
},
{
"b": 1,
"c": 2,
"attr":[
{
"a": "abe",
"d": False
},
{
"a": "abf",
"d": True
}
]
},
{
"b": 2,
"c": 2,
"attr":[
{
"a": "abg",
"d": True
}
]
}
]

我的尝试:

In [423]: df.set_index(['b', 'c']).agg(list, 1).to_dict()
Out[423]: {(1, 1): ['abd', False], (1, 2): ['abf', True], (2, 2): ['abg', True]}

我能够分组和创建字典,但不确定如何将列名与其一起放置。

最佳答案

理解

[dict(b=b, c=c, attr=d.to_dict('records'))
for (b, c), d in df.set_index(['b', 'c']).groupby(['b', 'c'])]

[{'b': 1, 'c': 1, 'attr': [{'a': 'abc', 'd': True}, {'a': 'abd', 'd': False}]},
{'b': 1, 'c': 2, 'attr': [{'a': 'abe', 'd': False}, {'a': 'abf', 'd': True}]},
{'b': 2, 'c': 2, 'attr': [{'a': 'abg', 'd': True}]}]

关于python - Pandas:Groupby 并使用剩余的列名和值创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66794309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com