Я пытаюсь выбрать, используя несколько дат, и назначить значение столбцу на основе максимального значения цены на основе этих 2 дат. может быть полезно, если кто-то может указать, является ли это самым быстрым способом.
Я пробовал этот код, но он создал новую строку и не меняет существующую строку.
def updateRecord(dfIn, starDate, endDate):
mask = (dfIn['date'] <= endDate) & (dfIn['date'] >= startDate)
new_df = dfIn.loc[mask]
if len(new_df) == 0:
return dfIn
dfIn.loc[dfIn.loc[mask].price.max(), 'highest'] = 1
dfIn.loc[dfIn.loc[mask].price.min(), 'lowest'] = 1
return dfIn
date price highest lowest
2000-05-01 04:00:00 4.439730 0 0
2000-05-02 04:00:00 4.209830 0 0
2000-05-03 04:00:00 4.109380 0 0
2000-05-04 04:00:00 3.953130 0 0
2000-05-05 04:00:00 4.040180 0 0
2000-05-08 04:00:00 3.933040 0 0
2000-05-09 04:00:00 3.765630 0 0
2000-05-10 04:00:00 3.546880 0 0
2000-05-11 04:00:00 3.671880 0 0
2000-05-12 04:00:00 3.843750 0 0
2000-05-15 04:00:00 3.607150 0 0
2000-05-16 04:00:00 3.774560 0 0
2000-05-17 04:00:00 3.620540 0 0
2000-05-18 04:00:00 3.598220 0 0
2000-05-19 04:00:00 3.357150 0 0
2000-05-22 04:00:00 3.212060 0 0
2000-05-23 04:00:00 3.064740 0 0
2000-05-24 04:00:00 3.131700 0 0
2000-05-25 04:00:00 3.116630 0 0
2000-05-26 04:00:00 3.084830 0 0
2000-05-30 04:00:00 3.127230 0 0
2000-05-31 04:00:00 3.000000 0 0
2000-06-01 04:00:00 3.183040 0 0
2000-06-02 04:00:00 3.305810 0 0
.....
2000-06-30 04:00:00 3.261160 0 0
желаемый результат должен состоять в том, что строки должны быть обновлены, как показано ниже:
df = updateRecord(df, '2000-05-01 04:00:00', '2000-05-31 04:00:00')
df output should be:
2000-05-01 04:00:00 4.439730 1 0
2000-05-31 04:00:00 3.000000 0 1
мой текущий код создает новую строку вместо обновления существующей строки.