#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:
Решение:
- Разделите дату и время на 2 столбца: Дата и время
symbol Date Time Open_Value AAPL 2021-09-20 09:30:00-04:00 143.800003
- Сортировка и удаление дубликатов из «символа» и «Даты»
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')
- объедините в new_df, чтобы добавить столбец
- Вычислите «Day_Delta»
Комментарии:
1. Основная часть вашего вопроса («вычислить столбец «Day_Delta»») остается расплывчатой.
2. ну, это было неправильно понято с вашей стороны. вам не нужно понижать оценку вопроса..