【问题标题】:Float data showing property of string? Float cant be added in Python显示字符串属性的浮点数据?浮点数不能在 Python 中添加
【发布时间】: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_csvdtype 参数或稍后转换为浮动: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)

标签: python dataframe


【解决方案1】:

您将行转换为浮动,因此print(type(float(row))) 肯定会打印float。你试过sum += float(row)吗?

此外,要获得一列的总和,而不是使用raw_data['Price'].sum(),这样更有效且更简洁。您可能需要在执行此操作之前转换类型

raw_data['Price'].astype(float).sum()

【讨论】:

  • 嗨,西蒙,谢谢。我尝试使用 .sum() 但它没有用。这是报告的错误:发生异常:ValueError 无法将字符串转换为浮点数:'Price'.. 你知道为什么吗?
  • 这意味着价格列中的某些条目无法从字符串转换为浮点数。很可能有一些无法转换为浮点数的字符串表示的缺失值。您可以做的是在 read_csv 使用 na_values 中指定这些值。这会将它们转换为 NaN,这意味着您可以在之后执行 raw_data['Price'].dropna().sum()。
  • 嗨西蒙,我再次尝试仍然没有运气......同样的错误。我能够使用我的原始 iterrow() 方法找到有问题的数据,并且在此处报告了错误(请参见此图片):i.stack.imgur.com/AxJQT.png
  • 然后我回来查看原始的 CSV 文件,它告诉我错误在于这一行:i.stack.imgur.com/D9REY.png 它似乎不是 NA 值。你知道这是为什么吗?
  • 我希望我可以在此处附加我的 CSV 文件,但我不能... :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 2017-09-18
  • 2019-08-13
  • 2019-04-16
  • 1970-01-01
相关资源
最近更新 更多