Python如何从对象转换为浮点

2024-04-25 12:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含两列的XLSX文件,即monthsrevenue,并将其保存为CSV文件。通过使用pandas读取我的csv文件,revenue列现在变成了object。如何将此列更改为浮动

data = pd.DataFrame

dat['revenue']

7980.79
Nan
1000.25
17800.85
.....
Nan 
2457.85
6789.33

这是我想更改的列,但它给了我不同的错误

我试过,astypeto_numeric但没有成功

我遇到的一些错误是:

Cannot parse a string '798.79'


Tags: 文件csvdataframepandasdataobject错误nan
2条回答

现在使用nucsit026的答案创建一个带有字符串的稍微不同的数据帧

dic = {'revenue':['7980.79',np.nan,'1000.25','17800.85','None','2457.85','6789.33']}
print(df)
print(df['revenue'].dtypes

输出:

    revenue
0   7980.79
1   NaN
2   1000.25
3   17800.85
4   None
5   2457.85
6   6789.33

dtype('O')

试试这个:

df['revenue']=pd.to_numeric(data['revenue'], errors='coerce').fillna(0, downcast='infer')

它将用0s替换nan

输出:

0     7980.79
1        0.00
2     1000.25
3    17800.85
4        0.00
5     2457.85
6     6789.33
Name: revenue, dtype: float64

编辑

如果引号是您可以使用的问题,请参阅您的共享错误

df['revenue']=df['revenue'].str.strip("'")

然后尝试使用上述代码转换为float

EDIT2

OP在列值中有一些空格,如下所示

Month  Revenue
Apr-13 16 004 258.24
May-13
Jun-13 16 469 157.71
Jul-13 19 054 861.01
Aug-13 20 021 803.71
Sep-13 21 285 537.45
Oct-13 22 193 453.80
Nov-13 21 862 298.20
Dec-13 10 053 557.64
Jan-14 17 358 063.34
Feb-14 19 469 161.04
Mar-14 22 567 078.21
Apr-14 20 401 188.64

在这种情况下,请使用以下代码:

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

然后执行转换

从以上链接:

dic = {'revenue':[7980.79,None,1000.25,17800.85,None,2457.85,6789.33]}
df = pd.DataFrame(dic)
df['revenue'] = df.revenue.astype(float)
df

输出

    revenue
0   7980.79
1   NaN
2   1000.25
3   17800.85
4   NaN
5   2457.85
6   6789.33

相关问题 更多 >