gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:01:26 25 4
gpt4 key购买 nike

假设 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com