当这些行与列表中的所有值匹配时,从 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 of
lare present in
d['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` 行与正确的表名相关联?