在我的示例中,我返回包含 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/