<code>df_example = pd.DataFrame({'name': ['a', 'a', 'a', 'b', 'b', 'b'],
'class': [1, 2, 2, 3, 2, 2],
'price': [2, 4, 3, 1, 6, 5]})
</code>
<code>df_example = pd.DataFrame({'name': ['a', 'a', 'a', 'b', 'b', 'b'],
'class': [1, 2, 2, 3, 2, 2],
'price': [2, 4, 3, 1, 6, 5]})
</code>
df_example = pd.DataFrame({'name': ['a', 'a', 'a', 'b', 'b', 'b'],
'class': [1, 2, 2, 3, 2, 2],
'price': [2, 4, 3, 1, 6, 5]})
I want to filter each name
where the price
is larger than the smallest price
in a subset class==2
within name
grounp:
<code>df_example.sort_values(['name', 'price'], inplace=True)
df_tem = df_example[df_example['class'] == 2].groupby('name').first()
</code>
<code>df_example.sort_values(['name', 'price'], inplace=True)
df_tem = df_example[df_example['class'] == 2].groupby('name').first()
</code>
df_example.sort_values(['name', 'price'], inplace=True)
df_tem = df_example[df_example['class'] == 2].groupby('name').first()
Below is the pseudocode:
<code>df_example.groupby('name').apply(lambda key, val: val['price'] >= df_tem.loc[key]['price']).reset_index()
</code>
<code>df_example.groupby('name').apply(lambda key, val: val['price'] >= df_tem.loc[key]['price']).reset_index()
</code>
df_example.groupby('name').apply(lambda key, val: val['price'] >= df_tem.loc[key]['price']).reset_index()
Is there any effective way to achieve something like filter dataframe based on a subset within groupby