【问题标题】:Python Pandas Changing Column String Values to Float values in a new columnPython Pandas 将列字符串值更改为新列中的浮点值
【发布时间】:2019-11-23 13:49:50
【问题描述】:

我有一个数据框,其中包含一列浮点值(负浮点值和正浮点值),格式为 .000 (3dp)。该数字在 Column1 中表示为字符串,我想将 column2 作为浮点数添加到 DataFrame 中,并将浮点值的字符串表示形式转换为保留 3 dp 的浮点值。我在尝试执行此操作时遇到问题,并且出现错误消息“ValueError:无法将字符串转换为浮点数:”感谢任何帮助

代码

dataframe4['column2'] = ''
dataframe4['column2']=dataframe4['column1'].astype('float64')

#Round column1, column2 float columns to 3 decimal places

dataframe4.round({'column1': 3, 'column2': 3})

【问题讨论】:

  • 如果第 1 列包含字符串,则四舍五入时会出错。
  • 谢谢塔瓦布。我想知道如何将字符串类型转换为在 pandas 中浮动

标签: python string pandas floating-point type-conversion


【解决方案1】:

我不知道我是否完全理解你的问题,但你可以试试

dataframe4['column2'] = dataframe4['column1'].apply(lambda x : float(x))

编辑:如果有一些带逗号的数字,你可以试试:

dataframe4['column2'] = dataframe4['column1'].apply(lambda x : float(x.replace(",","")))

【讨论】:

  • 嗨,GatienC。不幸的是,我尝试了上述方法并在尝试将字符串转换为浮点数时收到错误消息。 ValueError:无法将字符串转换为浮点数:'9,826.000'
  • @daveb 你能确认这些数字中有逗号吗?这会破坏你的转化
  • 嗨帕特里克,非常感谢,不幸的是浮点数的字符串表示中有逗号。如果我在转换之前将它们删除,是否可以重新添加它们?
  • 是的,应该可以正常工作。让我快速看一下
  • 用 .replace 编辑了我的答案,它应该可以工作(没有看到你的先例评论,抱歉)
【解决方案2】:

问题似乎是您的浮点数中有逗号,例如'9,826.000'

你可以像下面这样修复

import re
re.sub(r",", "", "1,1000.20")
# returns '11000.20' and the below works
float(re.sub(r",", "", "1,1000.20"))
# you can e.g. use apply to apply to all your numbers in the DataFrame
df["new_col"] = df["old_col"].apply(lambda x: float(re.sub(r",", "", x)))

要在 pandas 之后仍然用逗号显示结果浮点数,您可以按照here 所述更改浮点数的显示设置

IDK 你想如何输出这些,但是例如在to_excel 函数中,您可以指定浮点格式,参见here 或在输出前重新格式化列,类似于上面。有关一些想法,请参阅此answer

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2016-03-31
    • 2014-11-05
    • 2018-01-11
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    相关资源
    最近更新 更多