python - 来自 groupby 多列的 bin 大小的嵌套字典

标签 python pandas dictionary dataframe pandas-groupby

df = pd.DataFrame({'a': [1,1,1,1,2,2,2,2,3,3,3,3], 'b': [5,5,1,1,3,3,3,1,2,1,1,1,]})
>>> df
    a  b
0   1  5
1   1  5
2   1  1
3   1  1
4   2  3
5   2  3
6   2  3
7   2  1
8   3  2
9   3  1
10  3  1
11  3  1
>>> df.groupby(['a','b']).size().to_dict()
{(1, 5): 2, (3, 2): 1, (2, 3): 3, (3, 1): 3, (1, 1): 2, (2, 1): 1}

我得到的是每个 ab 组合的计数,其中一个 tuple 作为 key 但我想要达到的是:

{1: {5: 2, 1: 2}, 2: {3: 3, 1: 1}, 3: {2: 1, 1: 3} }

最佳答案

你需要一个额外的 groupby 在一个 dict comprehension 中:

i = df.groupby(['a','b']).size().reset_index(level=1)
j = {k : dict(g.values) for k, g in i.groupby(level=0)}

print(j)
{
    1: {1: 2, 5: 2}, 
    2: {1: 1, 3: 3}, 
    3: {1: 3, 2: 1}
}

关于python - 来自 groupby 多列的 bin 大小的嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924864/

相关文章:

python - 如何按字母顺序对字符串进行排序,小写字母排在大写字母之前?

python - PyQt5:为pandas表模型实现removeRows

python - 在 Keras 中检查模型输入 : Found: <keras. preprocessing.image.DirectoryIterator... object> 时出错

python - 将 Pandas TimeDelta 转换为整数

python - 编码参数适用于 pandas.read_excel 吗?

python - 过滤字典的值

python - 将 build_ext 选项传递给 pip install

python - 消除给定百分位数上的所有数据

arrays - Swift - 来自 2 个过滤数组的字典

asp.net-mvc - MVC 5 : dictionary in model bound to a series of checkboxes in view?