Skip to main content
 首页 » 编程设计

python之给定另一列的值计算一列的唯一值

2025年05月04日14soundcode

所以,我对一些我认为相对容易的事情有疑问。

我有一个包含三列的数据框:

A  B  C 
x1 a  2 
x1 a  2 
x1 b  3 
x1 c  4 
x1 c  4 
x2 d  2 
x2 d  2 
x3 e  5 
x3 e  5 

现在,如果我现在想知道每个 A 组(x1、x2、x3)在 B 中有多少个在 C 中大于 2 的唯一值,并将其分配给一个新列 D,这将返回我以下

A  B  C  D 
x1 a  2  2 
x1 a  2  2 
x1 b  3  2 
x1 c  4  2 
x1 c  4  2 
x2 d  2  0 
x2 d  2  0 
x3 e  5  1 
x3 e  5  1 

我应该如何在不使用 for 循环的情况下在 Python Pandas 中获取它?这可能吗?

请您参考如下方法:

您可以先根据 C 列进行过滤,然后使用 groupby.nunique。结果系列可以用作映射:

df['D'] = df['A'].map(df[df['C']>2].groupby('A')['B'].nunique()).fillna(0) 
 
df 
Out:  
    A  B  C    D 
0  x1  a  2  2.0 
1  x1  a  2  2.0 
2  x1  b  3  2.0 
3  x1  c  4  2.0 
4  x1  c  4  2.0 
5  x2  d  2  0.0 
6  x2  d  2  0.0 
7  x3  e  5  1.0 
8  x3  e  5  1.0