python - 如何在一个点后只打印一个字符?
问题描述
我有一个具有不同值的数据框。这些值是数字,但有时它们可以是字符串。我只想在点后显示一位小数。
我试过转换为字符串,但我不知道如何在点后取一个字符。
这是我的数据框(减少):
0 18.932202 19.063694 19.822535 22.3385
1 19.215377 19.424890 20.249221 22.3116
2 19.096696 19.361342 20.011814 21.2492
3 18.914138 19.016130 >30.0 22.3597
4 18.896591 19.051426 19.647521 20.982
带有'>'的数字是一个字符串,这就是我将所有内容都转换为字符串的原因。
预期的数据框:
0 18.9 19.0 19.8 22.3
1 19.2 19.4 20.2 22.3
2 19.0 19.3 20.0 21.2
3 18.9 19.0 >30.0 22.3
4 18.8 19.0 19.6 20.9
解决方案
使用astype()
和 round()
这是一个有几种类型的样本
data = [[18.932202,19.063694,'19.822535',22.3385],
[19.215377,19.424890 ,'20.249221',22.3116],
[19.096696,19.361342,'20.011814',21.2492],
[18.914138,'19.016130',9.734784 ,22.3597],
[18.896591,19.051426,19.647521 ,20.982]]
df = pd.DataFrame(data, columns=['c1', 'c2', 'c3', 'c4'])
df.dtypes
输出 :
c1 float64
c2 object
c3 object
c4 float64
dtype: object
astype()
首先,您需要在 float64 (带点的数字类型)上投射您的 Dataframe
df = df.astype('float64')
df.dtypes
输出 :
c1 float64
c2 float64
c3 float64
c4 float64
dtype: object
然后用于 round()
减少点后的数字
df = df.round(1)
df
输出
c1 c2 c3 c4
0 18.9 19.1 19.8 22.3
1 19.2 19.4 20.2 22.3
2 19.1 19.4 20.0 21.2
3 18.9 19.0 9.7 22.4
4 18.9 19.1 19.6 21.0
推荐阅读
- string - 选择一个选项并赋值
- flutter - 如何在 Flutter 中滚动浏览固定列表并循环它?
- python - 您可以设置 Black 以使其不将 ... 语句放在换行符上吗?
- javascript - 未捕获的类型错误:$x 不是 Google 表格上的函数
- metadata - 配置 Shibboleth 元数据文件
- javascript - TypeError:将 react-redux-firebase 升级到 v ^3.9.0 时,store.getState 不是函数
- sqlite - Delphi/FireDAC/SQLite - 在 STRING 类型列上强制 TEXT 列关联(前导零丢失)
- python - 在 Python 脚本中调用 Python 调试器 - 立即结束并且不调试
- php - 如何在 Laravel 8 中保存会话
- automation - 您可以制作键盘快捷键来选择网站上的按钮吗?