关于python ::–‘str’和’str’不支持的操作数类型

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

TypeError: unsupported operand type(s) for -: 'str' and 'str'

当我运行以下代码时,

面对这个typeerror消息:

1
2
3
4
5
6
7
8
9
10
11
12
13
df_set= pd.read_excel("DATA_SVM.xlsx")

print(df_set.columns)

df1= df_set.drop([0])

df= df1.rename(columns={
    'MSCI World ':'Date',
    'MSCI WORLD U$ - PRICE/BOOK RATIO':'P/B',
    'MSCI WORLD U$ - DIVIDEND YIELD':'YDid',
    'NDDUWI':'Price'})

df['Return']=(df['Price'].shift(-1) - df['Price'])/df['Price']

我确定这是关于最后一行的内容。我想做的是通过使用fomular(price2-price1)/ price1创建一个新的列" return"。

顺便说一句,它可以由Notebook运行,但是Pycharm中的响应错误。

任何提供线索的人都会感激不尽。


您的"价格"列似乎设置为字符串格式。您首先需要转换为已定义减法的类型(例如float)

1
df['Price'] = df['Price'].apply(float)

我发现如果我输入.xlsx而不是csv,则以下行可以工作。

df['Return']=(df['Price'].shift(-1) - df['Price'])/df['Price']

,但仍然尝试找出如何在csv上制作它。文件。我不确定.shift函数是否可以用于csv文件。

也许最好改变话题。
是否可以实现另一功能:同一列中下一行的元素减去上一行的元素?