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
我想创建一个新的 df1,并满足以下条件:
每个 A 组(“红色”和“白色”):
- 如果B组中存在C值,则取C=B的行。
- 如果B组中不存在C值,则取D=B所在的行。
我的意思是,新的 df1 应该是:
A B C D
3 Red 12.0 11.5 12.0
5 White 10.5 10.5 11.0
最佳答案
您可以使用boolean indexing
与 concat
,然后 drop_duplicates
对于默认订购添加 sort_index
:
m1 = df['B'] == df['C']
m2 = df['B'] == df['D']
df = pd.concat([df[m1], df[m2]]).drop_duplicates('A').sort_index()
print (df)
A B C D
3 Red 12.0 11.5 12.0
5 White 10.5 10.5 11.0
关于python - 数据框组中的列条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49086932/