首页 > 解决方案 > pandas 在处理 nan 值的 groupby 对象上转换 nunique

问题描述

我有以下df

inv_id    cluster_id
793        2
           2
789        3
789        3
           4
           4

我喜欢groupby cluster_id检查每个组有多少唯一值,

df['same_inv_id'] = df.groupby('cluster_id')['inv_id'].transform('nunique') == 1  

但我喜欢设置same_inv_id = False一些集群只包含 empty/blank inv_id,并且当一些集群包含一个或多个 empty/blankinv_id时,结果将如下所示,

inv_id    cluster_id    same_inv_id
793        2            False 
           2            False
789        3            True
789        3            True
           4            False
           4            False 

标签: pythonpandasdataframepandas-groupby

解决方案


然后 IIUC 得到条件transform+all

s1=df.inv_id.ne('').groupby(df.cluster_id).transform('all')
s1
Out[432]: 
0    False
1    False
2     True
3     True
4    False
5    False
Name: inv_id, dtype: bool
s2=df.groupby('cluster_id')['inv_id'].transform('nunique') == 1 
#df['same_inv_id']=s1&s2

推荐阅读