String 在数据帧中传递字符串变量值

String 在数据帧中传递字符串变量值,string,pandas,variables,dataframe,String,Pandas,Variables,Dataframe,我一直在尝试使用变量在dataframe中为各种列操作传递字符串值,但代码给出了错误的结果。见下面的代码,我在Jupyter笔记本中使用: first_key = input("key 1: ") second_key = input("ket 2: ") third_key = input("ket 2: ") 下一个单元格中的操作值为“俄罗斯”、“中国”、“特朗普”,如下所示: tweets['{first_key}'] = tweets['text'].str.contains(r"^(

我一直在尝试使用变量在dataframe中为各种列操作传递字符串值,但代码给出了错误的结果。见下面的代码,我在Jupyter笔记本中使用:

first_key = input("key 1: ")
second_key = input("ket 2: ")
third_key = input("ket 2: ")
下一个单元格中的操作值为“俄罗斯”、“中国”、“特朗普”,如下所示:

tweets['{first_key}'] = tweets['text'].str.contains(r"^(?=.*\b{first_key}\b).*$", case=False) == True
tweets['{second_key}'] = tweets['text'].str.contains(r"^(?=.*\b'{second_key}'\b).*$", case=False) == True
tweets['{third_key}'] = tweets['text'].str.contains(r"^(?=.*\b'{third_key}'\b).*$", case=False) == True
但结果是错误的。知道如何得到正确的结果吗。结果的一个小快照如下所示


我已尝试清理您的代码。您可以利用f字符串(使用python-3.6+),只需对代码稍作更改:

def contains(series, key):
    return series.str.contains(rf"^(?=.*\b{key}\b).*$", case=False)
如果您使用的是较旧版本的python,请使用
str.format

def contains(series, key):
    return series.str.contains(r"^(?=.*\b{}\b).*$".format(key), case=False)    
接下来,在循环内调用此函数:

for key in (first_key, second_key, third_key):
    tweets[key] = contains(tweets['text'], key)

也许您想利用python f-strings,但在开始时忘记了“f”。好的,我们只知道“f”对列标题有效,但如何将其传递给regex。现在需要这个。谢谢!只是为了学习,我想知道如何在正则表达式中传递变量。谢谢@ambrishdhaka就像这样:
tweets[key]=tweets['text'].str.contains(rf“^(?=.*\b{key}\b.*$”,case=False)
似乎有问题,代码
case=False
用于使搜索查询不区分大小写。然后,使用条件==检查该值是否存在。但是,当使用
tweets[f'{first_key}]=tweets['text']时,结果都是假的。str.contains(r“^(?=.*\b{first_key}\b.*$”,case=False)=True
@ambrishdhaka
==True
是多余的,因为
包含了一个掩码。另外,它应该是
rf“^(?=.*\b{first\u key}\b.*$”
,您缺少一个前导
f
,请再次查看。另外,如果答案有帮助,请考虑通过投票,谢谢。你是对的。这是同一个“f”字。现在得到了正确的结果。而且,也不需要谢==True。我知道了。