gpt4 book ai didi

python - 如何从 pandas Dataframe groupby 对象获取一系列 json/字典

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:32 25 4
gpt4 key购买 nike

我有一个包含超过 2 列(Col1、Col2 等)的 Dataframe,我想生成一个系列,其中索引为 Col1,系列的值是字典,其中键为 Col2, (字典的)值是元组(Col1,Col2)的出现次数。

假设数据框是这样的:

    Col1 Col2 Col3 ...
0 A b ...
1 B e ...
2 A a ...
3 C a ...
4 A b ...
5 B c ...
6 A e ...
7 B c ...

我想要的输出是:

A {'a':1,'b':2,'e':1}
B {'c':2,'e':1}
C {'a':1}

我用这个循环成功了:

for t in my_df['Col1'].unique(): 
my_series.loc[t] = my_df[my_df['Col1'] == t].groupby('Col2').size().to_json()

但我想知道是否有一种方法可以使用 pandas 方法更有效地完成此操作,而无需迭代。

我还尝试使用两个索引进行groupby:

   my_df.groupby(['Col1','Col2']).size() 
>
Col1 Col2
A a 1
b 2
e 1
B c 2
e 1
C a 1

但找不到将结果转换为如上所示的系列字典的下一步

最佳答案

defaultdict 就是您所需要的:

import collections

resul = collections.defaultdict(dict)
for row in my_df.groupby(['Col1','Col2']).size().iteritems():
resul[row[0][0]][row[0][1]] = row[1]

pprint.pprint(resul)

按预期给出:

defaultdict(<class 'dict'>,
{'A': {'a': 1, 'b': 2, 'e': 1},
'B': {'c': 2, 'e': 1},
'C': {'a': 1}})

如果你想摆脱默认字典并想要一个普通的字典:

resul = dict(resul)

关于python - 如何从 pandas Dataframe groupby 对象获取一系列 json/字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58300387/

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