我有一个有两列(行,句子)的熊猫数据帧,我需要计算单词“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列。你知道吗
希望这有帮助:我刚刚创建了一个虚拟数据帧来包含
ab
并排除列表'fc ab', 'ab ac'
匹配是包含count的列。也可以将abs设置为包含非负值的安全性。你知道吗
相关问题 更多 >
编程相关推荐