首页 > 解决方案 > 比较后如何从数据框中删除行

问题描述

我想过滤我的数据框,使用filter带有条件的部分。我不知道该怎么做

import numpy as np


table = pd.DataFrame({'movie': ['thg', 'thg', 'mol', 'mol', 'lob', 'lob'],
                  'rating': [3., 4., 5., np.nan, np.nan, np.nan],
                  'name': ['John', 'Paul', 'Adam', 'Graham', 'Eva', 'Thomas']})

filter = pd.DataFrame({'name': ['John', 'Paul','Adam', 'Graham', 'Eva', 'Thomas'],
                       'qty': [1, 1, 3, 10, 7, 5]})

>>> table 
  movie    name  rating
0   thg    John       3
1   thg    Paul       4
3   mol    Adam       5
4   mol  Graham     NaN
5   lob     Eva     NaN
6   lob  Thomas     NaN

我知道这不起作用,但我无法改变这一点,请帮助我

result=df[(df['name'] == filter[qty<3]) ]


>>> result 
  movie    name  rating
0   thg    John       3
1   thg    Paul       4

标签: pythonpandasdataframefiltercomparison

解决方案


我相信你需要:

table[table['name'].isin(filt.loc[filt['qty']<3,'name'])]

  movie  rating  name
0   thg     3.0  John
1   thg     4.0  Paul

注意:我已将filter变量更改为filt因为filter它是一个内置函数,您不应该使用这样的名称命名变量


推荐阅读