选择多个列表中有多个列值的行

利亚莫德

我想从数据框中选择值,例如:

    Vendor_1   Vendor_2   Vendor_3
0   1          0          0
1   0          20         0
2   0          0          300
3   4          0          0
4   0          50         0
5   0          0          500 

我想从Vendor_1、2、3保留的值都在单独的列表中,即v_1,v_2,v_3。例如说v_1 = [1],v_2 = [20],v_3 = [500],这意味着我只希望保留这些行。

我已经尝试过类似的方法:

df = df[(df['Vendor_1'].isin(v_1)) & (df['Vendor_2'].isin(v_2)) & ... ]

这给了我一个空的数据框,是上述逻辑所引起的这个问题,还是不存在具有这些约束的行(在我的实际数据帧中可能性很小)。

干杯

编辑:

好的,所以我已经意识到我的示例有一个根本的区别,实际上是我的df中的样子,如果Vendor_1有一个值,那么Vendor_2,3必须为0,依此类推。所以我使用isin链的逻辑没有道理,请更新示例df。

所以我觉得我需要制作3个子集,然后将其合并?

广晃

isin 接受字典:

d = {
    'Vendor_1':[1],
    'Vendor_2':[20],
    'Vendor_3':[500]
}

df.isin(d)

输出:

   Vendor_1  Vendor_2  Vendor_3
0      True     False     False
1     False      True     False
2     False     False     False
3     False     False     False
4     False     False     False
5     False     False      True

然后根据您的逻辑,要检查anyall

df[df.isin(d).any(1)]

输出:

   Vendor_1  Vendor_2  Vendor_3
0         1         0         0
1         0        20         0
5         0         0       500

但是如果你使用all在这种情况下,例如,你需要Vendor_1=1Vendor_2=20Vendor_3=500必须发生在同一行,你会保留这些行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章