Я пытаюсь заменить значения в определенных столбцах в панде.Поскольку нужно внести ряд изменений, я подхожу к этому с помощью цикла for (хотя я не предвосхищен этим как ответом).Я только начинаю с python, поэтому очень извиняюсь, если это очевидно - я не могу найти ничего, что могло бы решить эту проблему.
Скажем, у меня есть такой кадр данных:
import pandas as pd
weather_data = [["unknown", "rainy"], ["unknown", "sun"], ["rainy", "not sunny at all"], ["stormy", "a lot of rain"]]
weather = pd.DataFrame(weather_data, columns = ["weather", "weather_note"])
Если данные о погоде неизвестны, я хочу использовать текст из примечаний для заполнения данных.Например, если он говорит «дождь», тогда я хочу, чтобы значение погоды было «дождливым», предполагая, что оно ранее было неизвестно.
Я пробовал это:
weather_text = ["rain", "sun"]
weather_label = ["rainy", "sunny"]
for i in range(len(weather_text)):
weather.loc[weather['weather_note'].str.contains(weather_text[i], na = False) &
weather['weather'].str.contains("unknown")] = weather_label[i]
Это меняет каждое значение в строке, которое соответствует условию, на любое значение в weather_label.Я понимаю, почему это происходит, но я не уверен, как изменить только соответствующий столбец.Я пробовал это:
for i in range(len(weather_text)):
weather.loc[weather['weather_note'].str.contains(weather_text[i], na = False) &
weather['weather']str.contains("unknown")]
weather['weather'] = weather_label[i]
Но затем значение меняется на последнее значение в списке weather_label, а не на то же индексное положение.
В моих реальных данных гораздо больше комбинаций шаблонов и значений, поэтому я не хочу запускать каждую комбинацию по отдельности.
Кто-нибудь может помочь?