我有存储为字符串的销售数据。我正在尝试转换为浮点数,以便我可以汇总数据,但是我收到以下错误“ ValueError:无法将字符串转换为浮点数:'收入'。
我也尝试替换美元符号和逗号,但类型仍然是字符串。
>>> df['revenue'] = df['revenue'].replace('$| ','')
>>> type('revenue')
<class 'str'>
我也尝试了以下
pd.to_numeric(df.revenue)
但这也给了我一个错误,提示“ ValueError:无法解析字符串“ $ 1,557.97”
数据在负数(即(45.22))周围也有方括号,我不确定该如何转换。
您必须使用regex=True
,\$
因为在中$
有特殊含义regex
。
您还必须删除,
。
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句