【发布时间】:2021-12-27 22:38:32
【问题描述】:
我有以下数据框:
| Item | Type | Value |
|---|---|---|
| item1 | A1 | 11 |
| item1 | A1 | 12 |
| item2 | A1 | 21 |
| item2 | A1 | 22 |
| item3 | A1 | 31 |
| item3 | A1 | 11 |
| item4 | A1 | 12 |
| item4 | A1 | 21 |
| item5 | A2 | 22 |
| item5 | A2 | 31 |
当 type=A1 时,如何计算每个项目的唯一出现次数?在上面的例子中,它应该是 4
我在想这样的事情:
df['Type']=='A1'
list=df['Item'].unique()
occurance=list.str.len()
有没有更好更简单的方法来做到这一点?
【问题讨论】:
-
不要覆盖内置的
list函数。另外,你目前的做法有什么不安的地方? -
使用Boolean Indexing 和nunique
df.loc[df['Type'] == 'A1', 'Item'].nunique()推荐在this answer by Scott Boston -
或者groupby nunique
df.groupby('Type')['Item'].nunique()like this answer by Dan Allan 如果你想要所有类型的所有唯一项目计数。