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

时间:2018-05-01 01:52:03

标签: string pandas variables dataframe

我一直在尝试使用变量在数据框中传递字符串值以进行各种列操作,但代码却给了我错误的结果。请参阅下面的代码,我在Jupyter Notebook中使用:

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

但结果是错误的。知道如何获得正确的结果。结果的一个小快照是这样的。

Output of the code run.

1 个答案:

答案 0 :(得分:1)

我已经尝试清理你的代码了。您可以利用f-strings(使用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)