python - 除新列外,所有列向上舍入
问题描述
我想将此列添加到已经存在的数据框中。
df['THRESHOLD'] = df['AVG_CNT'] * 3
cols = ['AVG_CNT', 'STD_DEV', 'THRESHOLD']
df[cols] = df[cols].round(1)
print (df)
我想将列四舍五入为一个有效数字。除新列外,所有列都被四舍五入df['THRESHOLD']
。为什么会这样?
df.info() 的结果
<class 'pandas.core.frame.DataFrame'>
Int64Index: 16 entries, 0 to 15
Data columns (total 4 columns):
AVG_CNT 16 non-null float64
ID 16 non-null int64
STD_DEV 16 non-null float64
THRESHOLD 16 non-null float64
dtypes: float64(3), int64(1)
memory usage: 640.0 bytes
None
解决方案
您可以使用它round
来执行此操作。
你可以通过几种方式做到这一点。
df = df.round({'AVG_CNT': 1, 'STD_DEV': 1, 'THRESHOLD': 1})
或者像你一样:
cols = ['AVG_CNT', 'STD_DEV', 'THRESHOLD']
df[cols] = df[cols].round(1)
或者
df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']] = df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']].round(1)
或使用apply
和Series.round
df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']] = df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']].apply(lambda x: pd.Series.round(x, 1))
或者
df[cols] = df[cols].apply(lambda x: pd.Series.round(x, 1))
推荐阅读
- java - 将数据发送到另一个活动的 Listview
- amazon-web-services - 使用 AWS Lambda (NodeJS) 训练和部署 SageMaker ML 模型
- assembly - 这两条指令在做什么?
- node.js - Node.js express 在 / 之后得到一切
- python-3.x - 如何在网络爬虫中添加链接的内部文本?
- javascript - 推送到数组不会触发 vue 的反应
- microsoft-translator - 有没有办法将数据从一个项目导入/导出到门户中的另一个项目?
- sparql - 如何在 sparql 中获得 n 跳双向
- python - 卸载 django-tinymce。makemigrations 时导入错误
- docker - 如何从主机的远程 devcontainer 中访问从 VSCode 调试器启动的 .NET Core webapi 服务