数据框组中的列条件

问题描述 投票:2回答:1
       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
python pandas
1个回答
4
投票

您可以使用boolean indexingconcat,然后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
© www.soinside.com 2019 - 2024. All rights reserved.