【问题标题】:Delete pandas df rows on condition根据条件删除 pandas df 行
【发布时间】:2019-07-24 19:01:47
【问题描述】:

鉴于以下两个熊猫数据框df1df2,我试图从df1["a"](字符串)中删除与df2["z"] 的所有条目中的任何字符串都不匹配的所有行。

df1 = pd.DataFrame({'a' : ['use social tag', 'dubmod intern workshop data', 
                           'deep collabor filter', 'pathrank a novel node rank'],
                    'b' : ["test", "test2" ,"test3", "test4"]})

df1

    a                            b
0   use social tag               test
1   dubmod intern workshop data  test2
2   deep collabor filter         test3
3   pathrank a novel node rank   test4



df2 = pd.DataFrame({'z' : ['experiment', 'dubmod intern workshop data', 
                           'deep collabor filter', 'experiment3']})

df2

    z
0   experiment
1   dubmod intern workshop data
2   deep collabor filter
3   experiment3

结果应该是这样的:

    a                            b
0   dubmod intern workshop data  test2
1   deep collabor filter         test3

【问题讨论】:

标签: python python-3.x string pandas


【解决方案1】:

为了完全满足您的要求,我的意思是“重新生成”索引,运行:

df1[df1.a.isin(df2.z)].reset_index(drop=True)

【讨论】:

    【解决方案2】:

    如果你只是在寻找完全匹配,那真的很简单:

    df1[df1['a'].isin(df2['z'])].reset_index(drop=True)
    

    您正在过滤df1 中的df2 中的行,而不是删除。

    【讨论】:

    • 如果您不想刷新索引,这可以正常工作。
    • @Peet 您只需添加.reset_index(drop=True)
    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    相关资源
    最近更新 更多