如何在pandas中的聚合函数中创建并查找列的频率
我有一个dataframe,我想做一个groupby两列,然后创建一个字典,它的值和频率作为聚合函数。这就是我的数据看起来的样子如何在pandas中的聚合函数中创建并查找列的频率,pandas,pandas-groupby,Pandas,Pandas Groupby,我有一个dataframe,我想做一个groupby两列,然后创建一个字典,它的值和频率作为聚合函数。这就是我的数据看起来的样子 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} 我该怎么做呢?使用groupby+值\u计数+进行记录 df=
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}
我该怎么做呢?使用
groupby
+值\u计数
+进行记录
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
使用
groupby
+值\u计数
+进行记录
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
to_json更简单我想@W-B(lambda x:x.value_counts().to_json()).reset_index()@W-B:我怎样才能添加另一个字典大小的列?@H.Z.你认为dict的大小是指长度吗?@W-B:我可以知道str[0]在这里做什么吗?@H.Z.因为熊猫会自动将dict转换为熊猫数据帧类型,所以我们需要把我们创建的所有dict放到列表中来“保护”它,然后你的dict在列表中,我们做str[0],选择列表的第一项得到dict/to_json更简单我想@W-B(lambda x:x.value_counts().to_json())。reset_index()@W-B:我如何添加另一个字典大小的列?@H.Z.你认为dict的大小是多少,你是说长度吗?@W-b:我可以知道str[0]在这里做什么吗?@H.Z.因为pandas会自动将dict转换为pandas数据帧类型,所以我们需要将我们创建的所有dict都列在列表中以“保护”它,然后你的dict在列表中,我们执行str[0],选择列表的第一项获取dict/