代码之家  ›  专栏  ›  技术社区  ›  ambrish dhaka

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

  •  1
  • ambrish dhaka  · 技术社区  · 7 年前

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

    但结果是错误的。知道如何得到正确的结果吗。结果的小快照如下所示。

    Output of the code run.

    1 回复  |  直到 7 年前
        1
  •  1
  •   cs95 abhishek58g    7 年前

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