неподдерживаемые типы операндов для /: 'str' и 'str' Ошибка для операций в PandasDataframe - PullRequest
0 голосов
/ 16 марта 2020

Я хочу, чтобы этот мини-код работал, но он показывает:

 '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 ]

2 голосов
/ 16 марта 2020

Возможно, ваш компьютер настроен на чтение чисел с символом «,» в качестве десятичного разделителя вместо «.». Попробуйте:

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()
0 голосов
/ 17 марта 2020

Ваш столбец 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...