У меня есть фрейм данных, который я создал из файлов CSV и вставил в визуализацию графика. Проблема в том, что я заметил несколько резких отклонений. Два набора данных, с которыми я работаю, - это скорость ветра и порывы ветра. По сути, я хочу, чтобы любое значение, при котором скорость ветра больше, чем значение порыва, было переопределено как порыв.
Я просмотрел его строки, и я думаю, что близок, я получил ключевое значение = 0 wen Я пытаюсь запустить свой для l oop, который, как я прочитал, связан с тем, что я пытаюсь выполнить l oop через индексированный фрейм данных. Однако все исправления, которые я видел, не помогли. Как я могу go просматривать каждый кадр данных строка за строкой и переопределять значение для другого кадра данных, если это условие выполняется?
Вот мой соответствующий фрагмент кода:
#Imports of data above this snippet
#Create tables with monthly mean & max wind speeds
#Ignore null values
wind = pd.DataFrame(df, columns = ['wind_speed'])
wind.dropna(how = 'any', inplace = True)
wind['wind_speed'] = wind['wind_speed'].astype(str).astype(float)
wind_m = wind.resample('M').mean()
wind_max = wind.resample('M').max()
#Limit to May-November
wind_m = wind_m[wind_m.index.month.isin([5,6,7,8,9,10])]
wind_max = wind_max[wind_max.index.month.isin([5,6,7,8,9,10])]
#Build the same mean and max tables for wind gusts
gust = pd.DataFrame(df, columns = ['wind_gust'])
#Drop all rows that don't contain a gust (inplace)
gust.dropna(how = 'any', inplace = True)
#Convert data types from objects to datetime and float
gust['wind_gust'] = gust['wind_gust'].astype(str).astype(float)
gust_m = gust.resample('M').mean()
gust_max = gust.resample('M').max()
#Limit to May-November
gust_m = gust_m[gust_m.index.month.isin([5,6,7,8,9,10])]
gust_max = gust_max[gust_max.index.month.isin([5,6,7,8,9,10])]
#Impose a catch that redefines any wind greater than the gust value as a gust
i = 0
for index, row in wind_max.iterrows():
if wind_max[i] > gust_max[i]:
gust_max[i] = wind_max[i] # this is where I return the key error
i += 1
#Visualizations below this snippet
** РЕДАКТИРОВАТЬ: Пример визуализации и набора данных для каждого запроса:
Обратите внимание на выброс, когда красная линия превышает синюю линию, чего никогда не должно происходить. Если красная линия превышает синюю, ее следует переопределить как порыв (синий)
Пример набора данных:
Столбцы: ID станции, Дата и время, Скорость ветра, порыв ветра