python - Pandas:对于大于 1 的值,如何舍入最接近整数的值?
问题描述
以下是数据框。我想对“期间”中最接近整数的值进行四舍五入。例如:1.005479452 四舍五入为 1.0000,2.002739726 四舍五入为 2.0000,3.002739726 四舍五入为 3.00000,5.005479452 四舍五入为 5.0000,12.01369863 四舍五入为 12.0000 等等。我有一个很大的清单。我正在尝试这样做,因为在以后的程序中,我必须基于“周期”列将此数据帧与其他数据帧连接起来。
df = period rate
0.931506849 -0.001469
0.994520548 0.008677
1.005479452 0.11741125
1.008219178 0.073975
1.010958904 0.147474833
1.994520548 -0.007189219
2.002739726 0.1160815
2.005479452 0.06995
2.008219178 0.026808
2.010958904 0.1200695
2.980821918 -0.007745727
3.002739726 0.192208333
3.010958904 0.119895833
3.019178082 0.151857267
3.021917808 0.016165
3.863013699 0.005405321
4 0.06815
4.002739726 0.1240695
4.016438356 0.2410323
4.019178082 0.0459375
4.021917808 0.03161
4.997260274 0.0682
5.005479452 0.1249955
5.01369863 0.03260875
5.016438356 0.238069083
5.019178082 0.04590625
5.021917808 0.0120625
12.01369863 0.136991
12.01643836 0.053327917
12.01917808 0.2309365
我正在尝试做类似下面的事情,但无法更进一步。
df['period'] = np.where(df.period>1, df.period.round(), df.period.round(decimals = 4))
解决方案
您可以应用 lambda 函数。这个将在四舍五入之前检查它的值是否大于一,否则对于小于一的值四舍五入到小数点后 4 位。我想这就是你想要的?
df['period'] = df['period'].apply(lambda x: round(x, 0) if x > 1 else round(x, 4))
推荐阅读
- activiti - 未找到潜在启动器
- neo4j - 未知功能“存在”
- javascript - React Native 初始化索引以传递道具
- cpu - 在 CPU 上运行 Fast RCNN 时出错:无法使用 GPU
- css - FontAwesome Striped Star
- point-cloud-library - 如何从 RANSAC 捕获 PCL_ERROR?
- vb.net - InputLanguage 无法正常工作
- json - VSCode - Rubocop - Settings.json - 预期文件结尾
- hyper-v - 在我的 Windows 10 更新(2018 年 7 月)之后,我无法启动我的 Hyper V VM:找不到引导磁盘
- java - 为什么它在 Notificationcompat.Builder 中显示已弃用的 API 使用情况