小编Jak*_*her的帖子

根据下限/上限条件,将 pandas 列值四舍五入或截断为小数点后 2 位

我有一个数据帧,需要根据以下逻辑将其专门转换为两位小数分辨率

  • if x (以超过两位小数的值表示) > math.floor(x) + 0.5

    • ...然后将该值四舍五入到小数点后两位。
  • if x(以两位以上小数位的值表示)< math.ceil(x) - 0.5

    • ...然后将该值截断为两位小数。

我遇到的主要问题是实际上看到这些新舍入/截断的值替换了数据框中的原始值。

示例数据框:

import math
import pandas as pd  

test_df = pd.DataFrame({'weights': ['25.2524%', '25.7578%', '35.5012%', '13.5000%', 
    "50.8782%", "10.2830%", "5.5050%", "30.5555%", "20.7550%"]})

# .. which creates:

   | weights |
|0 | 25.2524%|
|1 | 25.7578%|
|2 | 35.5012%|
|3 | 13.5000%|
|4 | 50.8782%|
|5 | 10.2830%|
|6 |  5.5050%|
|7 | 30.5555%|
|8 | 20.7550%|
Run Code Online (Sandbox Code Playgroud)

定义截断函数,以及配置小数分辨率的函数:

def truncate_decimals(target_allocation, two_decimal_places) -> float:
    decimal_exponent = 10.0 …
Run Code Online (Sandbox Code Playgroud)

python truncate rounding floor pandas

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

floor ×1

pandas ×1

python ×1

rounding ×1

truncate ×1