我希望运行此迷你代码,但它显示:
'unsupported operand type(s) for /: 'str' and 'str''
我该如何解决?
这是数据帧的图片:
import pandas as pd
btc = pd.read_csv('btc.csv',index_col='Date',parse_dates=True)
btc = btc['Price']
spy = pd.read_csv('spy.csv',index_col='Date',parse_dates=True)
spy = spy['Price']
stocks = pd.concat([btc,spy],axis=1).dropna()
stocks.columns = ['btc','spy']
stocks.pct_change(1).corr()
答案 0 :(得分:2)
也许您的计算机设置为读取以','作为小数点分隔符而不是'。'的数字。试试:
import pandas as pd
btc = pd.read_csv('btc.csv',index_col='Date',parse_dates=True, decimal='.', thousands=',')
btc = btc['Price']
spy = pd.read_csv('spy.csv',index_col='Date',parse_dates=True, decimal='.', thousands=',')
spy = spy['Price']
stocks = pd.concat([btc,spy],axis=1).dropna()
stocks.columns = ['btc','spy']
stocks.pct_change(1).corr()
答案 1 :(得分:0)
您的列spy
的数据类型为object
,因为它包含(不允许)数千个分隔符,
:
stocks.head()
btc spy Date 2012-02-02 6.1 1,325.54 2012-02-03 6.0 1,344.90 2012-02-06 5.4 1,344.33 2012-02-07 5.7 1,347.05 2012-02-08 5.6 1,349.96
stocks.dtypes
btc float64 spy object dtype: object
执行此操作:
stocks["spy"] = stocks.spy.str.replace(",", "").astype(float)
恰好在上一条命令stocks.pct_change(1).corr()
之前。