Python - 将美元值转换为 float

标签 python string pandas floating-point

我有存储为字符串的销售数据。我正在尝试转换为 float 以便聚合数据,但我收到以下错误“ValueError:无法将字符串转换为 float :‘收入’。

我也尝试替换美元符号和逗号,但类型仍然是字符串。

>>> df['revenue'] = df['revenue'].replace('$| ','')
>>> type('revenue')
<class 'str'>

我也试过下面的

pd.to_numeric(df.revenue)

但这也给了我一个错误,说“ValueError:无法解析字符串“$1,557.97”

数据也有负数括起来的括号(即 (45.22)),我不确定如何转换。

最佳答案

您必须使用 regex=True\$ 因为 $regex 中有特殊含义。< br/> 您还必须删除 ,

import pandas as pd

df = pd.DataFrame({'revenue': ["$1,557.97 "]})

df['revenue'] = df['revenue'].replace('\$|,', '', regex=True)

df['revenue'] = pd.to_numeric(df['revenue'])

print(df)
print(df.dtypes)

如果空格位于开头或结尾,则您不必删除它们 - 但空格不能位于数字之间。


除了 pd.to_numeric() 你还可以使用

df['revenue'] = df['revenue'].astype(float)

但在转换为 float

之前,您仍然需要删除 $,

编辑:要删除 (( )),您可以使用 regex

.replace('\$|,|\(|\)', '', regex=True)

因为 ( )regex 中有特殊含义所以你必须使用 \(, \)

你也可以使用 regex [...] 不需要\

.replace('[$,()]', '', regex=True)

import pandas as pd

df = pd.DataFrame({'revenue': [" $1,557.97 ", "((45.22))"]})

#df['revenue'] = df['revenue'].replace('\$|,|\(|\)', '', regex=True)
df['revenue'] = df['revenue'].replace('[$,()]', '', regex=True)

#df['revenue'] = pd.to_numeric(df['revenue'])
df['revenue'] = df['revenue'].astype(float)

print(df)
print(df.dtypes)

关于Python - 将美元值转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59043604/

相关文章:

python - 将字典与 DataFrame 中的列和索引相匹配 | Python

python - 如何使用 matplotlib Python 绘制时间序列

python - 在我输入的某些路径中保存文件时出现问题

Java 将键码转换为字符串或字符

python - 模拟骑士序列之旅

javascript parseInt 检测溢出

java - 将字符串转换为日期java错误 "incompatible types"

python - dropna() 不接受 thresh 参数和传递给轴参数的列表

Python - 通过 X 点拟合多项式(多维)

python - 与语言 X 闭包相比,Python 中的闭包有哪些限制?