как сохранить вывод инструкции if elif в новую переменную в фрейме данных python?

#python #regex #pandas #dataframe

#python #регулярное выражение #pandas #фрейм данных

Вопрос:

как мне отредактировать следующий скрипт, чтобы сохранить выходные данные как новые переменные в исходном фрейме данных?

ИНАЧЕ: вместо функции печати, должны ли выходные данные сохраняться как новая переменная для каждого оператора if elif?

 import re

df = pd.read_excel('edmundstest.xlsx')

for Keyword, Landing_Page in zip(df["Keyword"], df["Landing_Page"]):

# the url
    if "/2019/" in Landing_Page:
        new_model_core_incentives = Landing_Page
        print(f"new_model_core_incentives {new_model_core_incentives}")
    elif re.search("/(?:(?:20)|(?:19))d{2}/", Landing_Page):
        used_model_core_incentives = Landing_Page 
        print(f"used_model_core_incentives {used_model_core_incentives}")    

# the "keywords"
    if "2019" in Keyword:
        new_word = Keyword
        print(f"new_word {new_word}")
    elif re.search("/(?:(?:20)|(?:19))d{2}/", Keyword) is None:
        old_word = Keyword
        print(f"old_word {old_word}")

  

т.е.: new_model_core_incentives или used_model_core_incentives как новую переменную в фрейме данных и new_word и old_word как новую переменную в фрейме данных?

Ответ №1:

Вы могли бы использовать словарь:

 dict[Keyword]=f"new_model_core_incentives {new_model_core_incentives}"
dict2[Keyword]=f"old_word {old_word}"
  

Что-то вроде этого:

 import re

df = pd.read_excel('edmundstest.xlsx')

dict, dict2 = {}, {}

for Keyword, Landing_Page in zip(df["Keyword"], df["Landing_Page"]):

# the url
    if "/2019/" in Landing_Page:
        new_model_core_incentives = Landing_Page
        print(f"new_model_core_incentives {new_model_core_incentives}")
    elif re.search("/(?:(?:20)|(?:19))d{2}/", Landing_Page):
        used_model_core_incentives = Landing_Page 
        dict[Keyword]=f"new_model_core_incentives {new_model_core_incentives}"    

# the "keywords"
    if "2019" in Keyword:
        new_word = Keyword
        print(f"new_word {new_word}")
    elif re.search("/(?:(?:20)|(?:19))d{2}/", Keyword) is None:
        old_word = Keyword
        dict2[Keyword]=f"old_word {old_word}"
  

Комментарии:

1. поместил бы я это туда, где находится инструкция print?

2. да. просто убедитесь, что предварительно определили dict

3. есть ли способ сделать это с исходным df?

4. Я не знаю структуру фрейма данных. Если это изменяемый объект, вы всегда можете просто добавить к нему