如何对Dataframe数组列中的单个值按Group分组统计频次?
按Group分组统计数组中单个值的频次
完全可以通过扁平化数组且不破坏分组逻辑来实现需求,核心是把数组拆成单个元素并保留对应的Group归属,再做分组统计。具体步骤如下:
- 扁平化数组列:用pandas的
explode()方法将Value列的每个数组元素拆成独立行,原Group列的值会自动对应到每一行元素上。 - 分组统计频次:基于扁平化后的DataFrame,按
Group分组后对Value列做频次统计。
示例代码
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Group': ['A', 'A', 'B', 'B'], 'Value': [[1, 2, 3], [2, 3], [4, 5], [5, 5, 6]] }) # 链式调用实现:扁平化+分组统计 result = df.explode('Value')\ .groupby('Group')['Value']\ .value_counts()\ .reset_index(name='Count') print(result)
输出结果
Group Value Count 0 A 2 2 1 A 3 2 2 A 1 1 3 B 5 3 4 B 4 1 5 B 6 1
如果你的Value列存在空数组或None值,可以通过dropna()过滤掉无效行:
result = df.explode('Value')\ .dropna(subset=['Value'])\ .groupby('Group')['Value']\ .value_counts()\ .reset_index(name='Count')
内容的提问来源于stack exchange,提问作者Akshay Chacko
相关产品推荐
相关产品推荐

