【发布时间】:2021-02-17 03:36:16
【问题描述】:
只是想知道是否有更好的方法来做到这一点。基本上我有一些类别,我想为每个 val 找到所有唯一的组合,然后计算每个类别的实例数。包含astype(str) 让我很恼火。
df = pd.DataFrame(
{
'cat': ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b'],
'val': [1, 1, 2, 2, 3, 4, 5, 5]
}
)
df.groupby('val')['cat'].apply(lambda x: set(x)).astype(str).value_counts()
输出:
{'a', 'b'} 2
{'c', 'a'} 1
{'b'} 1
{'c'} 1
Name: cat, dtype: int64
以下没有给出想要的结果
df.groupby('val')['cat'].unique().value_counts()
输出:
[b] 1
[c, a] 1
[a, b] 1
[c] 1
[a, b] 1
【问题讨论】:
-
那么.. 代码中的问题是什么?
-
groupby 应用没有问题,我觉得我需要将 set 系列转换为 str 系列并想知道是否有更好的方法
标签: python pandas pandas-groupby