我有存储为字符串的销售数据。我正在尝试转换为 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/