【发布时间】:2022-01-07 17:26:12
【问题描述】:
我从某个地方获得了 vix 数据并尝试进行一些研究。查数据时发现由于某种原因无法分析数据,报错
发生异常:TypeError + 不支持的操作数类型:“float”和“str”
我正在使用此代码检查所有内容:
import pandas as pd
data_path = r"\Stock Data\VIX.csv"
raw_data = pd.read_csv(data_path)
sum = 0
for index, row in raw_data['Price'].iteritems():
print(row)
print(type(float(row)))
sum = sum + row
print(sum)
print(index)
代码在这里报了上面的错误:(见附图)
你们知道为什么会发生这种情况吗?所有数据似乎都是浮动的,但它没有运行,因为它说它是字符串?非常感谢。
the original data subset where the code stopped\n the place code stopped according to the terminal
【问题讨论】:
-
row仍然是原始字符串,除非您将float(row)的结果重新分配给名称:row = float(row)。您只测试字符串 是否可以 被解析为float,而不是数据本身 是float。 -
或者看看
pandas.read_csv()的dtype参数 -
您可以使用
read_csv的dtype参数或稍后转换为浮动:result = raw_data['Price'].astype('float64').sum(),同样没有隐式迭代它会更快。请不要为变量使用内置名称,sum是广泛使用的函数! -
@SUTerliakov 谢谢!我尝试了 sum 但它不起作用......这就是为什么我正在做 iteritems() 以查看问题出在哪里。这是我做 raw_data['Price'].astype('float64').sum().. 时的错误。发生异常:ValueError 无法将字符串转换为浮点数:'Price' 你知道为什么吗?
-
列中某处的值无法转换为浮点数。例如,可能是逗号而不是点,或者其他奇怪的东西。尝试像您一样进行迭代并找到无法转换为浮点数的值:
for index, row in raw_data['Price'].iteritems(): try: float(row); except ValueError: print(row)