I have a dataframe where there are duplicate values in column A that have different values in column B.
I want to delete rows if one of column A duplicated values has values higher than 15 in column B.Original Datafram
| A Column | B Column |
|---|---|
| 1 | 10 |
| 1 | 14 |
| 2 | 10 |
| 2 | 20 |
| 3 | 5 |
| 3 | 10 |
Desired dataframe
| A Column | B Column |
|---|---|
| 1 | 10 |
| 1 | 14 |
| 3 | 5 |
| 3 | 10 |
CodePudding user response:
This works:
dfnew = df.groupby('A Column').filter(lambda x: x['B Column'].max()<=15 )
dfnew.reset_index(drop=True, inplace=True)
dfnew = dfnew[['A Column','B Column']]
print(dfnew)
output:
A Column B Column
0 1 10
1 1 14
2 3 5
3 3 10
CodePudding user response:
Here is another way using groupby() and transform()
df.loc[~df['B Column'].gt(15).groupby(df['A Column']).transform('any')]
