pandas сравнить определенные записи столбца по дате и значению - PullRequest
0 голосов
/ 18 февраля 2020

моя проблема:

 df1 = [{'Day': '2019-12-01', 'Issue Date': '2019-12-01', 'Price': '50'},
 {'Day': '2019-12-02', 'Issue Date': '2019-12-01', 'Price': '45'},
 {'Day': '2019-12-03', 'Issue Date': '2019-12-01', 'Price': '40'},
       {'Day': '2019-12-02', 'Issue Date': '2019-12-02', 'Price': '50'},
 {'Day': '2019-12-03', 'Issue Date': '2019-12-02', 'Price': '42'},
 {'Day': '2019-12-04', 'Issue Date': '2019-12-02', 'Price': '41'}, 
      {'Day': '2019-12-03', 'Issue Date': '2019-12-03', 'Price': '60'},
 {'Day': '2019-12-04', 'Issue Date': '2019-12-03', 'Price': '50'},
 {'Day': '2019-12-05', 'Issue Date': '2019-12-03', 'Price': '48'} 

]

Теперь я хочу автоматически сравнить цену даты выпуска с ценой на ту же дату накануне.

Чтобы узнать, на сколько выросла цена со вчерашнего дня до сегодняшнего дня, и создать новый столбец с этим значением.

Например: я бы хотел сравнить цену на 2 декабря в 'Дата выпуска: 2019-12-02 (цена = 45), к цене 2 декабря в' Дата выпуска: 2019-12-01 '(цена = 50). Результат должен быть плюс 10%.

И так далее. Как мне это сделать?

1 Ответ

0 голосов
/ 19 февраля 2020

Хорошо, если я правильно понимаю вашу проблему, попробуйте это:

df1 = [{'Day': '2019-12-01', 'Issue Date': '2019-12-01', 'Price': '50'},
 {'Day': '2019-12-02', 'Issue Date': '2019-12-01', 'Price': '45'},
 {'Day': '2019-12-03', 'Issue Date': '2019-12-01', 'Price': '40'},
       {'Day': '2019-12-02', 'Issue Date': '2019-12-02', 'Price': '50'},
 {'Day': '2019-12-03', 'Issue Date': '2019-12-02', 'Price': '42'},
 {'Day': '2019-12-04', 'Issue Date': '2019-12-02', 'Price': '41'}, 
      {'Day': '2019-12-03', 'Issue Date': '2019-12-03', 'Price': '60'},
 {'Day': '2019-12-04', 'Issue Date': '2019-12-03', 'Price': '50'},
 {'Day': '2019-12-05', 'Issue Date': '2019-12-03', 'Price': '48'} 

]

df = pd.DataFrame(df1)

df['Price'] = df['Price'].astype(int)

df['Issue Price'] = df.loc[df['Day'] == df['Issue Date'], 'Price']

df['Issue Price'] = df['Issue Price'].ffill()

df['Pct Change'] = (df['Issue Price'] - df['Price']) / df['Issue Price']
df

Вывод:

          Day  Issue Date  Price  Issue Price  Pct Change
0  2019-12-01  2019-12-01     50         50.0    0.000000
1  2019-12-02  2019-12-01     45         50.0    0.100000
2  2019-12-03  2019-12-01     40         50.0    0.200000
3  2019-12-02  2019-12-02     50         50.0    0.000000
4  2019-12-03  2019-12-02     42         50.0    0.160000
5  2019-12-04  2019-12-02     41         50.0    0.180000
6  2019-12-03  2019-12-03     60         60.0    0.000000
7  2019-12-04  2019-12-03     50         60.0    0.166667
8  2019-12-05  2019-12-03     48         60.0    0.200000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...