расчет столбца на основе значения

#python #pandas #yfinance

Вопрос:

используя yfinance для получения приведенного ниже df, как рассчитать столбец «Day_Delta» с дельтой /-% от значения Open_Value начала дня

 symbol  Datetime                    Value_Type  Open_Value  Day_Delta
AAPL    2021-09-20 09:30:00-04:00   Close      143.839996    
AAPL    2021-09-20 10:00:00-04:00   Close      142.940002   
AAPL    2021-09-20 10:30:00-04:00   Close      142.750000            
AAPL    2021-09-20 11:00:00-04:00   Close      143.089905   
AAPL    2021-09-20 11:30:00-04:00   Close      142.490494   
 

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

1. Можете ли вы обновить свой пост ожидаемыми значениями для Day_Delta, пожалуйста?

2. Конечно, вы можете делать это ряд за рядом. Если вы не видели этот символ на эту дату, сохраните базовое значение. Затем установите для своей новой колонки значение (Open_Value - base) * 100 / Open_Value

3. @TimRoberts: Как создать столбец «база» для выполнения вычисления?

4. (df.Open_Value.pct_change() 1).cumprod() * 100 - 100 ? Я пропустил delta часть моего последнего комментария.

5. Или решение @TimRoberts, которое намного быстрее (df.Open_Value - df.Open_Value[0]) * 100 / df.Open_Value[0]

Ответ №1:

Решение:

  1. Разделите дату и время на 2 столбца: Дата и время
      symbol  Date             Time       Open_Value
     AAPL    2021-09-20  09:30:00-04:00  143.800003
     
  2. Сортировка и удаление дубликатов из «символа» и «Даты»
     stock_day_open = stock_data.sort_values(['symbol', 'Date', 'Time', 'Open_Value'], ascending[True, True, True, True])
    stock_day_open = stock_day_open.drop_duplicates(['symbol','Date'], keep='first')
     
  3. объедините в new_df, чтобы добавить столбец
  4. Вычислите «Day_Delta»

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

1. Основная часть вашего вопроса («вычислить столбец «Day_Delta»») остается расплывчатой.

2. ну, это было неправильно понято с вашей стороны. вам не нужно понижать оценку вопроса..