如何使用AND操作筛选包含特定字符值的行

2024-05-16 05:03:08 发布

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

我的问题是这个问题的延伸,这个问题在这个环节得到了很好的回答:

我把答案贴在下面,当字符串包含单词“ball”时,字符串将被过滤掉:

In [3]: df[df['ids'].str.contains("ball")]
Out[3]:
     ids     vals
0  aball     1
1  bball     2
3  fball     4

现在我的问题是:如果我的数据中有长句,我想用单词“ball”和“field”来识别字符串呢?因此,当只有一个词出现时,它会丢弃包含单词“ball”或“field”的数据,而保留字符串中包含两个单词的数据。


Tags: to数据字符串idsfielddfstringfilter
3条回答

如果你有2个以上,你可以使用这个..(注意速度没有foxyblue的方法好)

l = ['ball', 'field']
df.ids.apply(lambda x: all(y in x for y in l))
df[df['ids'].str.contains("ball")]

会变成:

^{pr2}$

如果你喜欢整洁的代码:

contains_balls = df['ids'].str.contains("ball")
contains_fields = df['ids'].str.contains("field")

filtered_df = df[contains_balls & contains_fields]

您可以使用np.logical_and.reduce和{}来处理多个单词。在

df[np.logical_and.reduce([df['ids'].str.contains(w) for w in ['ball', 'field']])]

In [96]: df
Out[96]:
             ids
0  ball is field
1     ball is wa
2  doll is field

In [97]: df[np.logical_and.reduce([df['ids'].str.contains(w) for w in ['ball', 'field']])]
Out[97]:
             ids
0  ball is field

相关问题 更多 >