1 回答

TA贡献1862条经验 获得超7个赞
使用GroupBy.transformwithDataFrameGroupBy.nunique测试唯一值的数量并按条件设置新值DataFrame.loc:
df.loc[df.groupby('col2')['col3'].transform('nunique') != 1, 'col3'] = 'A'
print (df)
col1 col2 col3
0 a 1 A
1 b 2 A
2 c 2 A
3 d 2 A
4 e 3 B
5 f 3 B
详情:
首先检查每个组的唯一值数量,其transform大小与原始 DataFrame 相同:
print (df.groupby('col2')['col3'].transform('nunique'))
0 1
1 2
2 2
3 2
4 1
5 1
Name: col3, dtype: int64
然后测试不相等:
print (df.groupby('col2')['col3'].transform('nunique') != 1)
0 False
1 True
2 True
3 True
4 False
5 False
Name: col3, dtype: bool
最后按值覆盖True行A。
添加回答
举报