python - 在数据框中查找必须包含列表中至少 2 个元素的行

标签 python python-3.x pandas dataframe

在我的示例中,我返回包含 list1 中任何一个元素的所有行。我想要更加严格,并使其返回至少包含 list1 中两个元素的行。

这可能吗?

import pandas as pd
data = [
    ['tom steve orange', 'jane'],
    ['dave smith green', 'fran'],
    ['brit dave red', 'terri']
]
cols = ['A', 'B']
df = pd.DataFrame(data, columns=cols)

list1 = ['dave', 'red', 'blue']

df = df[df['A'].str.contains('|'.join(list1))].reset_index(drop=True)
print(df)

当前结果:

                  A      B
0  dave smith green   fran
1     brit dave red  terri

期望的结果:

                  A      B
0     brit dave red  terri

最佳答案

您可以使用集合操作:

S = set(list1)

out = df[[len(set(l.split())&S)>=2 for l in df['A']]]

# or
# out = df[[len(S.intersection(l.split()))>=2 for l in df['A']]]

输出:

                 A      B
2    brit dave red  terri

关于python - 在数据框中查找必须包含列表中至少 2 个元素的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71974609/

相关文章:

python - Keras 如何处理多标签分类?

python-3.x - 鉴于我有python中指定的各种范围的概率,我如何生成随机数

python - 如何在可见窗口中保留注释?

python - pandas如何通过计算现有列的值来分组创建其他列

python - 将 xml 解析为 python 中的 pandas 数据框

python - 如何连接具有相同键和互补值的两行

python - 为什么 django 不使用我的自定义编码器类?

python - pygame中自制的2D碰撞检测不起作用

python - 创建一个记录主持人命令的记录器,类似于 'modlogs'

python - 通过 Python 扫描指令从打印机获取 PDF 文件