Вычисление pandas pct_change, когда df содержит ошибку получения строки: TypeError: неподдерживаемые типы операндов для /: 'float' и 'str' - PullRequest
0 голосов
/ 17 июня 2020

Мой фрейм данных выглядит так:

           ticker     close_x     close_y
date                                     
2020-06-02   SPOT  183.429993  189.229996
2020-06-03   SPOT  189.289993  184.639999
2020-06-04   SPOT  183.910004  181.830002
2020-06-05   SPOT  177.770004  184.059998
2020-06-08   SPOT  183.690002  187.330002
2020-06-02   TSLA  892.288025  881.400024
2020-06-03   TSLA  885.739929  882.510010

Вот мой код, который генерирует вышеуказанное:

df['date'] = pd.to_datetime(df['created_at']).dt.date
df['time'] = pd.to_datetime(df['created_at']).dt.time
df.sort_values(by=['ticker','date', 'time'], inplace=True)
first = df.groupby(['ticker','date']).first()['close']
df_first = first.to_frame().reset_index()
last = df.groupby(['ticker','date']).last()['close']
df_last = last.to_frame().reset_index()
df_merged = df_first.merge(df_last, left_on=['ticker','date'], right_on=['ticker','date'])
df_merged.set_index(['date'], inplace=True)

Я хочу вычислить pct_change между close_x и close_y. Когда я пытаюсь

df_merged['pct_change'] = df_merged.pct_change(axis=1)['close_y']

, я получаю эту ошибку:

TypeError: неподдерживаемые типы операндов для /: 'float' и 'str'

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

1 Ответ

1 голос
/ 17 июня 2020

Вы можете выбрать только столбцы close s:

df_merged['pct_change'] = df_merged[['close_x','close_y']].pct_change(axis=1)['close_y']
print (df_merged)
           ticker     close_x     close_y  pct_change
date                                                 
2020-06-02   SPOT  183.429993  189.229996    0.031620
2020-06-03   SPOT  189.289993  184.639999   -0.024565
2020-06-04   SPOT  183.910004  181.830002   -0.011310
2020-06-05   SPOT  177.770004  184.059998    0.035383
2020-06-08   SPOT  183.690002  187.330002    0.019816
2020-06-02   TSLA  892.288025  881.400024   -0.012202
2020-06-03   TSLA  885.739929  882.510010   -0.003647
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...