如何根据其他数据框架的条件放弃一个pandas组。

问题描述 投票:0回答:1

我有两个数据框,看起来是这样的

df1 =
   name   color
0  John   Blue
1  John   Red
2  Lucy   Green
3  Lucy   Blue
4  Max    Blue
2  Max    White

还有

df2 =
   name   value
0  John   15
1  Lucy   20
2  Max    5

我正试图放弃所有的分组名称,在 df1valuedf210以下 (在这种情况下,我希望删除所有带有 df1['name']='Max').

我想得到的结果是。

df1 =
   name   color
0  John   Blue
1  John   Red
2  Lucy   Green
3  Lucy   Blue

谢谢!

python pandas dataframe pandas-groupby
1个回答
1
投票

像这样。

In [731]: res = pd.merge(df1, df2, on='name')
In [736]: res[res['value'].ge(10)][['name','color']]

Out[736]: 
   name  color
0  John   Blue
1  John    Red
2  Lucy  Green
3  Lucy   Blue

1
投票
#get names that are greater than or equal to 10
filtr = df2.loc[df2.value.ge(10),'name']

#extract names that match filtr

df1.loc[df1.name.isin(filtr)]

    name    color
0   John    Blue
1   John    Red
2   Lucy    Green
3   Lucy    Blue

0
投票
df1['name'].isin(['Max']) # select the df1 which name is 'Max'

df1=df1[~df1['name'].isin(['Max'])] # reverse select the other elements.
© www.soinside.com 2019 - 2024. All rights reserved.