根据其他 col 值计算 col 的唯一出现次数[重复]
Posted
技术标签:
【中文标题】根据其他 col 值计算 col 的唯一出现次数[重复]【英文标题】:count the unique occurrence of a col based on other col value [duplicate] 【发布时间】: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 如果你想要所有类型的所有唯一项目计数。
【参考方案1】:
你可以使用这个班轮:df[df['Type']=='A1'][['Item']].drop_duplicates()
然后你可以根据需要将输出转换为列表。
【讨论】:
【参考方案2】:len(df.loc[df["Type"]=="A1"]["Item"].unique())
【讨论】:
【参考方案3】:用途:
df.groupby('Type')['Item'].nunique()
输出:
Type
A1 4
A2 1
只有 A1:
df.groupby('Type')['Item'].nunique()['A1']
输出:4
【讨论】:
以上是关于根据其他 col 值计算 col 的唯一出现次数[重复]的主要内容,如果未能解决你的问题,请参考以下文章