df1中不在df2中的所有行

2024-09-30 16:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个df(df1),看起来像:

df1 = pd.DataFrame([
        ['YYZ', 'SFO', 1],
        ['YYZ', 'YYD', 1],
        ['YYZ', 'EWR', 1],
        ['YYZ', 'DFW', 1],
        ['YYZ', 'LAX', 1],
        ['YYZ', 'YYC', 1]
    ], columns=['city1', 'city2', 'val'])

我有另一个df(df2),它是df1的子集:

^{pr2}$

我想要df1中不在df2中的所有行。在

{我试着在这篇文章中描述过,但是我没有尝试过。在

你的帮助将不胜感激。在


Tags: columnsdataframedfpddf1df2laxdfw
2条回答
  • mergeindicator=True一起使用
  • 然后使用query只去掉那些有{}的

df1.merge(
    df2, how='outer', indicator=True
).query('_merge == "left_only"').drop('_merge', 1)

  city1 city2  val
2   YYZ   EWR    1
3   YYZ   DFW    1
4   YYZ   LAX    1
5   YYZ   YYC    1

用简单的英语直接问这个问题,嗯,我是说用普通的熊猫。”选择df1中不在df2中的所有行“转换为:

df1[~df1.isin(df2).all(axis=1)]
Out[127]: 
  city1 city2  val
2   YYZ   EWR    1
3   YYZ   DFW    1
4   YYZ   LAX    1
5   YYZ   YYC    1

相关问题 更多 >