此操作将我的DataFrame按两列进行分组,然后返回ColumnC
中具有最高值的行:
df2 = df.loc[df.groupby(['columnA', 'columnB'], sort=False)['columnC'].idxmax()]
相反,对于每个组中ColumnC > 100
处的所有行,我想选择ColumnD
中具有最高值的行。
我该怎么做?
修改:
以下@Code的注释基本上是我要寻找的内容,但是我不想排除没有行具有ColumnC > 100
的组,在这种情况下,我希望具有最高值的行如上例所示,在ColumnC
中。
答案 0 :(得分:0)
通常,我们将数据分成两部分,然后在条件之后过滤它们
df=sort_values('columnD')
df1 = df[df['columnC'] > 100]].drop_duplicates(['columnA', 'columnB'],keep='last')
df2 = df.drop_duplicates(['columnA', 'columnB'],keep='last')
Yourdf=pd.concat([df1,df2]).drop_duplicates(['columnA', 'columnB'])