python - Pandas :按列单元格中特定子字符串的多次出现过滤行

标签 python pandas string filter count

假设 dataFrame:

df = pd.DataFrame({
    'column_1': ['Apple', 'Apple Apple', 'Apple Apple', 'Peach Peach', 'Banana', 'Banana Banana'],
    'column_2': ['Some value', 'Some value', 'Some value', 'Some value', 'Some value', 'Some value']
})

给出:

        column_1    column_2
0          Apple  Some value
1    Apple Apple  Some value
2    Apple Apple  Some value
3    Peach Peach  Some value
4         Banana  Some value
5  Banana Banana  Some value

如何过滤行(重新分配 df)以仅包含子字符串 'Apple''Banana' 的行在 column_1 的每个单元格的每个字符串中出现不止一次

请注意,我想将过滤器指定为仅查找多次出现的 'Apple''Banana'(不是以编程方式查找所有多次出现的不应包含任何子字符串,例如 'Peach Peach')。

即过滤应该导致:

        column_1    column_2
1    Apple Apple  Some value
2    Apple Apple  Some value
5  Banana Banana  Some value

最佳答案

检查以下答案(保留 Apple_Banana_count 列以进行完整性检查):

import pandas as pd
import re
df = pd.DataFrame({
    'column_1': ['Apple', 'Apple Apple', 'Apple Apple', 'Peach Peach', 'Banana', 'Banana Banana'],
    'column_2': ['Some value', 'Some value', 'Some value', 'Some value', 'Some value', 'Some value']
})

df.assign(Apple_Banana_count =  df['column_1'].apply(lambda x: len([m.start() for m in re.finditer('Apple|Banana', x)]))).\
query('Apple_Banana_count > 1')

输出:

enter image description here

根据 Op 的评论更新了代码 - 未过滤以进行 Sense Check(您可以过滤这些列以获得所需的结果):

import pandas as pd

df = pd.DataFrame({
    'column_1': ['Apple', 'Apple Apple', 'Apple Apple', 'Peach Peach', 'Banana', 'Banana Banana', 'Apple Banana','Banana blash blah Apple '],
    'column_2': ['Some value', 'Some value', 'Some value', 'Some value', 'Some value', 'Some value', 'Some value', 'Some value']
})

df.assign(Apple_Banana_count =  df['column_1'].apply(lambda x: len([m.start() for m in re.finditer('Apple|Banana', x)])),
Apple_and_Banana=  df['column_1'].apply(lambda x: len([m.start() for m in re.finditer('(?=.*Apple)(?=.*Banana)', x)]))
)

输出:

enter image description here

关于python - Pandas :按列单元格中特定子字符串的多次出现过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73222056/

相关文章:

python - 优化创建/运行多个 SQLalchemy 引擎?

python - pandas.concat : Cannot handle a non-unique multi-index! Pandas Python

json - 将 Pandas Dataframe 转储到多个 json 文件

flash - 如何在 ActionScript 中的大写字母前添加空格?

java - 字符串 B 字赋值

python - 在pivot_table中排列列,Pandas

python - OpenCV 匹配模板

python - OpenCV:如何只绘制视频文件的第一帧,然后继续显示整个视频

python - 如何将系列添加到 DataFrame 中有自定义索引

c# - 如何使用正则表达式匹配不以空格开头的字符串?