基于Python中其他列的条件筛选
如果基于Python中其他列的条件筛选,python,pandas,Python,Pandas,如果Item包含mm,我想按Order\u id过滤数据 Order_id Item 22565 Id20 da1 23493 Id20 mm 42094 Id20 nm 42095 Id20 be2 42857 Id24 mm 43061 Id24 ba1 43529 Id26 da1 例如,Id20和Id24都包含mm,但不包含Id26,因此预
Item
包含mm
,我想按Order\u id
过滤数据
Order_id Item
22565 Id20 da1
23493 Id20 mm
42094 Id20 nm
42095 Id20 be2
42857 Id24 mm
43061 Id24 ba1
43529 Id26 da1
例如,Id20
和Id24
都包含mm
,但不包含Id26
,因此预期输出:
Order_id Item
22565 Id20 da1
23493 Id20 mm
42094 Id20 nm
42095 Id20 be2
42857 Id24 mm
43061 Id24 ba1
最好的方法是什么?使用:
df1 = df[df['Item'].eq('mm').groupby(df['Order_id']).transform('any')]
或:
嗨,耶兹雷尔,谢谢你的解决方案,但我认为这与我需要的不同。使用这两种方法返回的数据中,
Order\u id
不包含mm
@nilsinelabore-Hmm的项,因此如果filterdf2=df1[df1['Item'].eq('mm')]
它不会返回mm
行?jezrael抱歉,我弄错了,它工作了,谢谢!
df1 = df[df['Order_id'].isin(df.loc[df['Item'].eq('mm'), 'Order_id'])]
print (df1)
Order_id Item
22565 Id20 da1
23493 Id20 mm
42094 Id20 nm
42095 Id20 be2
42857 Id24 mm
43061 Id24 ba1