Python和Pandas:使用函数替换tex

2024-09-29 21:54:14 发布

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

我有一个有两列(行,句子)的熊猫数据帧,我需要计算单词“RESULT”在每个句子中出现的次数。但我不想计算它是否显示为“作为结果”或“是结果”等(实际的列表很长,还有其他的词)。 我以前在一个列表中遇到过这个问题,我使用了一个小技巧:我替换字符串,运行计数,然后他们将其替换回原来的字符串。参见下面的函数(版本1,第一次通过;版本2,第二次通过)。你知道吗

def ConfusingStrings(text, version):
    if version == 1:
        text = re.sub(r"AS A RESULT", "XXXASAREXULT", text)
        text = re.sub(r"WAS THE RESULT", "XXXWASTHEREXULT", text)
    if version == 2:
        text = re.sub(r"XXXASAREXULT", "AS A RESULT", text)
        text = re.sub(r"XXXOFTHEREXULT", "OF THE RESULT", text)
    return text

现在,对于pandas数据帧,我正在尝试使用apply函数,请参见下面的内容,但老实说,我无法让它工作。你知道吗

df['sentence'] = df.apply(ConfusingStrings(df['sentence'],1), axis=1)

谢谢你的意见。你知道吗

更新:

import pandas as pd
c = pd.DataFrame({'A': [1,2,3,4], 'B':['ABC RESULTS FROM XYZ', 'AS A RESULT WE WILL NOT', 'THE RESULT IS THAT', 'THE BORDER WAS THE RESULT OF'], 'C':[1, 0,1,0]})
print (c)

我需要的结果类似于C列(我在这里手动完成了),但请记住,这是一个简化,混乱的单词/表达式列表实际上相当长,这就是为什么我希望在函数中分离它(更容易更新并保持主代码更干净)。所以基本上我需要通过一个函数来创建C列。你知道吗


Tags: the数据函数字符串text版本redf
1条回答
网友
1楼 · 发布于 2024-09-29 21:54:14

希望这有帮助:我刚刚创建了一个虚拟数据帧来包含ab并排除列表'fc ab', 'ab ac'

import pandas as pd

df = pd.DataFrame({'A': [1,2,3,4,5,6], 'B':['ab', 'ab ac', 'fc ab', 'ab', 'ab ac', 'fc ab']})

list_to_include = ['ab']
list_to_exclude = ['fc ab', 'ab ac']

df['match'] = df['B'].str.count(r'|'.join(list_to_include)) - df['B'].str.count(r'|'.join(list_to_exclude))

匹配是包含count的列。也可以将abs设置为包含非负值的安全性。你知道吗

相关问题 更多 >

    热门问题