Передача значения строковой переменной в кадре данных Pandas - PullRequest
0 голосов
/ 01 мая 2018

Я пытался использовать переменные для передачи строкового значения в 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 голосов
/ 01 мая 2018

Я пытался очистить ваш код. Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...