只需要从列表中选择至少存在一个值的行

2024-06-23 19:01:00 发布

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

只需从列表中选择至少存在一个值的行

我尝试使用isin函数,如下所示,但它也返回列表中没有任何值的行:-

df[(df.loc[:,'P_1':'P_90'].isin(list))]

Note:-P_1 to P_90 indicated range of columns. Sample data:- dib-cust_id|p_1|p_2|.......|p_90 345|1950|1860|..............|675

Note:- I can't provide exact data as it's confidential. Above is just an example how dataframe will look like with 91 columns.

请让我知道这个方法有什么问题,还有没有其他方法可以得到想要的结果


Tags: columnsoftosample方法函数df列表
1条回答
网友
1楼 · 发布于 2024-06-23 19:01:00

您需要的是:

df[df.loc[:,'P_1':'P_90'].isin(list())].dropna(how='all')

好的,这是任何不匹配的值,所以您实际上需要:

df[df[df.loc[:,'P_1':'P_90'].isin(list())].dropna(how='all').index]

这肯定不是最有效的

当前公式不起作用的原因是,基本上返回的是带有isin的真/假数组,而不是列表isin不删除行,它根据值是否在给定列表中,将单元格标记为TrueFalse。因此True/False的数组具有与原始df相同的索引,当您执行df[array]操作时,它将采用该数组的索引,也称为相同的索引

不是给每个细胞提供TrueFalse,而是给每行-此时pandas将以您想要的方式进行过滤

相关问题 更多 >

    热门问题