为什么我不能划分这两个变量?
Why can I not divide these two variables?
我对 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']
您正在尝试分割字符串。尝试将它们转换为数字类型,如 float:
for i in (stock1,stock2):
i["Price"] = i["Price"].astype(float)
i['Norm return'] = i['Price'] / i.iloc[0]['Price']
我认为你的价格中有“$”符号,所以首先,你必须从价格中删除“$”。
pd.read_csv
会尝试推断格式,但有时无法推断。您可以通过 dtype
参数给出类型提示,如下所示:
stock1 = pd.read_csv('stock1.csv', parse_dates=['Date'], dtype={'Price': float})
也许把它从 parse_dates
中拉出来就足够了。通过写 parse_dates=['Date', 'Price']
,您告诉 pandas 尝试将价格设为日期。
您可能还会遇到一个错误,这可能是 pandas 首先没有将该列读取为浮点数的原因。 .csv 中的 'NAN' 之类的字符串可以这样做。在 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html 中,您可以设置大量其他参数来处理这种情况。
我对 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']
您正在尝试分割字符串。尝试将它们转换为数字类型,如 float:
for i in (stock1,stock2):
i["Price"] = i["Price"].astype(float)
i['Norm return'] = i['Price'] / i.iloc[0]['Price']
我认为你的价格中有“$”符号,所以首先,你必须从价格中删除“$”。
pd.read_csv
会尝试推断格式,但有时无法推断。您可以通过 dtype
参数给出类型提示,如下所示:
stock1 = pd.read_csv('stock1.csv', parse_dates=['Date'], dtype={'Price': float})
也许把它从 parse_dates
中拉出来就足够了。通过写 parse_dates=['Date', 'Price']
,您告诉 pandas 尝试将价格设为日期。
您可能还会遇到一个错误,这可能是 pandas 首先没有将该列读取为浮点数的原因。 .csv 中的 'NAN' 之类的字符串可以这样做。在 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html 中,您可以设置大量其他参数来处理这种情况。