给出以下数据框:
import pandas as pd
df = pd.DataFrame(
{'A':['A','A','B','B','C','C'],
'B':['Y','Y','N','N','Y','N'],
})
df
A B
0 A Y
1 A Y
2 B N
3 B N
4 C Y
5 C N
我需要一行代码: 1.确定B列中每个A类别的唯一值是否超过1个(即类别" C" A列中B列有2个唯一值,而类别" A"并且" B"在A列中每个只有1个唯一值。 2.将B列中的值更改为" Y" 仅当每个类别有超过1个唯一值时(即B列应该具有" Y"对于两个类别" C"在A列中;
这是预期的结果:
A B
0 A Y
1 A Y
2 B N
3 B N
4 C Y
5 C Y
提前致谢!
答案 0 :(得分:2)
你可以:
df['B'] = df.groupby('A')['B'].transform(lambda x: 'Y' if x.nunique() > 1 else x)
得到:
A B
0 A Y
1 A Y
2 B N
3 B N
4 C Y
5 C Y
答案 1 :(得分:1)
这应该有效:
File "/Users/kamal/.pyenv/versions/3.4.0/lib/python3.4/contextlib.py", line 78, in __exit__
raise RuntimeError("generator didn't stop")
RuntimeError: generator didn't stop