无法在pandas中将字符串转换为浮点数(ValueError)

yb3bgrhw  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(115)

我有一个从JSON输出创建的框架,看起来像这样:

Total Revenue    Average Revenue    Purchase count    Rate
Date    
Monday  1,304.40 CA$     20.07 CA$          2,345             1.54 %

字符串
存储的值作为字符串从JSON中接收。我正在尝试:
1)删除条目中的所有字符(例如:CA$或%)2)将rate和revenue列转换为float 3)将count列转换为int
我试着做以下事情:

df[column] = (df[column].str.split()).apply(lambda x: float(x[0]))


它工作正常,除非我有一个昏迷的值(例如:1,465不会工作,而143会)。
我尝试使用几个函数来替换“,”由“"等。没有工作到目前为止。我总是收到以下错误:
ValueError:无法将字符串转换为float:'1,304.40'

t98cgbkg

t98cgbkg1#

这些字符串有逗号作为千位分隔符,所以你必须在调用float之前删除它们:

df[column] = (df[column].str.split()).apply(lambda x: float(x[0].replace(',', '')))

字符串
这可以通过将split移动到lambda内部来简化:

df[column] = df[column].apply(lambda x: float(x.split()[0].replace(',', '')))

bpsygsoo

bpsygsoo2#

另一个list理解的解决方案,如果需要,应用string函数只与SeriesDataFrame的列)一起工作,如str.splitstr.replace

df = pd.concat([df[col].str.split()
                       .str[0]
                       .str.replace(',','').astype(float) for col in df], axis=1)

#if need convert column Purchase count to int
df['Purchase count'] = df['Purchase count'].astype(int)
print (df)
         Total Revenue  Average Revenue  Purchase count  Rate
Date                                                        
Monday         1304.4            20.07            2345  1.54

字符串

t1rydlwq

t1rydlwq3#

我也遇到过这个问题,我的问题是使用下面的代码解决的:

import pandas as pd
df['Purchase count'] = pd.to_numeric(df['Purchase count'], errors='coerce')
print(df.dtypes)

字符串

kd3sttzy

kd3sttzy4#

下面的解决方案为我工作..!!

import pandas as pd

df['Purchase count'] = df['Purchase count'].replace(',', '', regex=True).astype(float)

print('type:    ', type(df['Purchase count']))

字符串

相关问题