pandas怎么筛选两个不同长度列,返回不相同部分数据?

假设如下数据:

df = pd.DataFrame({'name':['a','a','b','b','b','b'],'num':[1,3,1,2,3,4]})

   name  num
0    a    1
1    a    3
2    b    1
3    b    2
4    b    3
5    b    4

df2 = pd.DataFrame({'num':[1,2,3,4,5]})

   num
0    1
1    2
2    3
3    4
4    5

比较 df1 和 df2 ,返回不相同的部分 a 对应的 2、4、5,b 对应的 5。

阅读 4.7k
1 个回答
  1. 单独筛选
df2[~df2.num.isin(df[df.name == 'a'].num)]

image.png

  1. 同时筛选
df.groupby('name')['num'].apply(lambda x: df2[~df2.num.isin(x)]).droplevel(1)

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题