当这些行与列表中的所有值匹配时,从 Python 中的 DF 中选择行

Posted

技术标签:

【中文标题】当这些行与列表中的所有值匹配时,从 Python 中的 DF 中选择行【英文标题】:Select rows from a DF in Python when these rows match all values in a list 【发布时间】:2021-03-15 19:01:45 【问题描述】:

我有一个值列表。如果 DataFrame 中存在 all 值,我想过滤这些记录。如果只存在一个值,则不匹配,因此不会发生任何事情。

A = [1,2,3]
B = [1,2,5]

DF = Label Value
     A       1
     B       2
     C       3
     D       4

对于数组 A,我想过滤值为 1、2、3 的 DF。 使用数组 B 没有任何反应。

【问题讨论】:

【参考方案1】:

我们定义以下函数,它接受一个数据帧d 和一个列表l,并在lif all elements oflare present ind['Value'], and unfiletred 中返回d 过滤d['Value] d`否则

def filter_if_all_exist(d, l):
    if not all([a in d['Value'] for a in l]):
        return d
    else:
        return d[[v in l for v in d['Value']]]

现在定义我们的输入

import pandas as pd
from io import StringIO
A = [1,2,3]
B = [1,2,5]

df = pd.read_csv(StringIO(
"""
Label Value
A       1
B       2
C       3
D       4
"""), delim_whitespace = True)

并应用我们的功能。我们有

filter_if_all_exist(df, A)

返回


    Label   Value
0   A       1
1   B       2
2   C       3

filter_if_all_exist(df, B)

返回


    Label   Value
0   A       1
1   B       2
2   C       3
3   D       4

【讨论】:

以上是关于当这些行与列表中的所有值匹配时,从 Python 中的 DF 中选择行的主要内容,如果未能解决你的问题,请参考以下文章

匹配列中的逗号分隔值

将表中的所有行与其他表中的第一个匹配行连接起来[重复]

使用 Python 有效地查找部分字符串匹配 --> 从 5 GB 文件中的值列表开始的值

Amazon Redshift:当找到的表 id 不匹配时,如何将 `stl_load_errors` 行与正确的表名相关联?

检查当前点是不是在路线(路径)上并从匹配的列表中获取这些点

设置列表项的值时自定义适配器中的空指针异常