为什么我不能把这两个变量分开?

2024-05-16 04:09:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python比较陌生。我尝试导入2只股票的csv。当我运行下面的代码时,我得到了这个错误:

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

这是否意味着它将价格视为一个字符串?如何确保在导入时将其视为数字

 import pandas as pd 

stock1 = pd.read_csv('stock1.csv', parse_dates=['Date', 'Price'])
stock2 = pd.read_csv('stock2.csv', parse_dates=['Date', 'Price'])


for i in (stock1,stock2):
    i['Norm return'] = i['Price'] / i.iloc[0]['Price']

Tags: csv代码forreaddateparse错误price
3条回答

pd.read_csv将尝试推断格式,但有时无法。您可以通过dtype参数给出类型提示,如下所示:

stock1 = pd.read_csv('stock1.csv', parse_dates=['Date'], dtype={'Price': float})

也许把它从parse_dates中拉出来就足够了。通过写 parse_dates=['Date', 'Price']你告诉熊猫试着把价格定为日期

您还可能会遇到一个错误,这可能是pandas最初不将列读取为float的原因。在.csv中使用像“NAN”这样的字符串可以做到这一点。在https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html中,您可以设置大量其他参数来处理此类场景

我认为您的价格中有“$”符号,因此首先,您必须从价格中删除“$”

您正在尝试分割字符串。尝试将它们转换为数字类型,如float:

for i in (stock1,stock2):
    i["Price"] = i["Price"].astype(float)
    i['Norm return'] = i['Price'] / i.iloc[0]['Price']

相关问题 更多 >