首页 > 解决方案 > Format() 返回字符串不是数字?

问题描述

我有这个 :

Date                 |  var1   |  var2 | var3 
2018-03-08 23:23:14  |   1.2   |   100 |  2.54
2018-03-09 20:00:14  |   1.0   |   100 |  2.554
2018-03-10 22:23:14  |   5.23  |   100 |  2.11
2018-03-12 18:21:14  |   4.22  |   100 |  0.2

我要那个 :

Date                 |  var1   |  var2 | var3 
2018-03-08 23:23:14  |   1.200 |   100 |  2.540
2018-03-09 20:00:14  |   1.000 |   100 |  2.554
2018-03-10 22:23:14  |   5.230 |   100 |  2.110
2018-03-12 18:21:14  |   4.220 |   100 |  0.200

我做了这个功能:

data['var1'] = data['var1'].apply(lambda x: format(x, '.3f'))
data['var3'] = data['var3'].apply(lambda x: format(x, '.3f'))

函数 Format() 返回一个字符串而不是数字。谢谢你 !

标签: pythonpandas

解决方案


Pandas 有一个选项display.float_format,它是一个函数(默认None),它接受一个浮点数并返回显示所需的字符串,例如:

In []:
pd.options.display.float_format

Out[]:
None:

In []:
print(df)

Out[]:
   Date                     var1       var2    var3 
0  2018-03-08 23:23:14         1.20      100   2.540
1  2018-03-09 20:00:14         1.00      100   2.554
2  2018-03-10 22:23:14         5.23      100   2.110
3  2018-03-12 18:21:14         4.22      100   0.200

In []:
pd.options.display.float_format = '{:.3f}'.format  # or lambda f: format(f, '.3f')
print(df)

Out[]:
   Date                     var1       var2    var3 
0  2018-03-08 23:23:14        1.200      100   2.540
1  2018-03-09 20:00:14        1.000      100   2.554
2  2018-03-10 22:23:14        5.230      100   2.110
3  2018-03-12 18:21:14        4.220      100   0.200

注意:这不会改变基础价值,只会强制显示。


推荐阅读