首页 > 解决方案 > 在 Pandas 数据框中传递字符串变量值

问题描述

我一直在尝试使用变量将数据框中的字符串值传递给各种列操作,但是代码给了我错误的结果。请参阅下面的代码,我在 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

但结果是错误的。任何想法如何获得正确的结果。结果的小快照是这样的。

代码运行的输出。

标签: stringpandasvariablesdataframe

解决方案


我试过清理你的代码。您可以利用 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)

推荐阅读