根据其他 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 的唯一出现次数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

计算每行数据表中的唯一值

根据带有参数的选择(唯一键)从另一个表中插入值

根据第一列中的唯一值计算第二列中值的出现次数

遍历 pandas 行并根据其他列中的值设置列值

基于两列中的值合并其他列中的值

如何根据其他列的某些值替换列的nan值