/:'str'和'str'不支持的操作数类型PandasDataframe中的操作错误

时间:2020-03-16 20:27:43

标签: python pandas dataframe

我希望运行此迷你代码,但它显示:

 'unsupported operand type(s) for /: 'str' and 'str''

我该如何解决?

这是数据帧的图片:

Here is a picture of the dataframe

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()

2 个答案:

答案 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()之前。