A B C D
0 Red 10.0 11.5 12.0
1 Red 10.5 11.5 12.0
2 Red 11.0 11.5 12.0
3 Red 12.0 11.5 12.0
4 White 10.0 10.5 11.0
5 White 10.5 10.5 11.0
6 White 11.0 10.5 11.0
7 White 12.0 10.5 11.0
我想为每个A 组应用下一个条件:
C values
都不同B values
(它发生在红色 A 组中,而不是发生在白色 A 组中):将C转换为D 值。我的意思是,结果应该是:
A B C D
0 Red 10.0 12.0 12.0
1 Red 10.5 12.0 12.0
2 Red 11.0 12.0 12.0
3 Red 12.0 12.0 12.0
4 White 10.0 10.5 11.0
5 White 10.5 10.5 11.0
6 White 11.0 10.5 11.0
7 White 12.0 10.5 11.0
我试过了:
df.loc[(df["B"] != df["C"]) & (df["B"] == df["D"]), "C"] = df["D"]
您可以使用 groupby,然后根据 B 和 C 之间的比较设置 C。
(
df.groupby('A')
.apply(lambda x: x.assign(C=x.D if x.B.ne(x.C).all() else x.C))
.reset_index(level=0,drop=True)
)
Out[41]:
A B C D
0 Red 10.0 12.0 12.0
1 Red 10.5 12.0 12.0
2 Red 11.0 12.0 12.0
3 Red 12.0 12.0 12.0
4 White 10.0 10.5 11.0
5 White 10.5 10.5 11.0
6 White 11.0 10.5 11.0
7 White 12.0 10.5 11.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句