python - 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() 返回一个字符串而不是数字。谢谢你 !
解决方案
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
注意:这不会改变基础价值,只会强制显示。
推荐阅读
- c - for 循环仅迭代在 scanf 之后编写的 printf 一次
- android - 如何在 webview 中打开相机?
- python - kmeans++的向量化实现
- maven - 无法确定 pom.xml 的全局设置
- oracle - Entity Framework db first:状态机器关联
- python-docx - 在 python-docx 中创建 word 字段以从 word 文档的第 2 页自动生成页脚(例如 # Page / # Total Pages)?
- excel - 用于匹配字符串并复制它的 VBA 代码
- typo3 - TYPO3:在 TCA 中使用 ###PAGE_TSCONFIG_ID### 和 addRecord
- machine-learning - spark 1.6 中用于高基数分类变量的散列编码器
- freertos - 低优先级任务需要先启动 FreeRTOS