我的数据帧如下所示:
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)
我想计算close_x
和close_y
之间的pct_change
。当我尝试时
df_merged['pct_change'] = df_merged.pct_change(axis=1)['close_y']
我收到此错误:
类型错误:不支持/的操作数类型:"浮点"和"str">
由于股票代码列是字符串。我该如何解决此问题?
您只能选择列close
:
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