我有一个数据框,我想按两列进行分组,然后创建一个字典,该字典将值及其频率作为聚合函数。这就是我的数据看起来不错
A, B, C
-------
1, 2, V
1, 2, V
1, 2, B
1, 3, V
1, 3, B
1, 3, B
我想对A
和B
进行分组,并创建一个字典,显示第C
列的频率。这就是我的最终数据帧的外观:
A, B, C
-------
1, 2, {V:2, B:1}
1, 3, {V:1, B:2}
我该怎么做?
答案 0 :(得分:2)
使用groupby
+ value_counts
+ to_dict
df=df.groupby(['A','B']).C.apply(lambda x : [x.value_counts().to_dict()]).str[0].reset_index()
df
Out[73]:
A B C
0 1 2 {'V': 2, 'B': 1}
1 1 3 {'B': 2, 'V': 1}
df.C.str.len()
Out[75]:
0 2
1 2
Name: C, dtype: int64