如何将日单位计算值向上取整至十位?附Python代码示例
问题解决代码修改
错误分析
原代码第三行直接覆盖了第二行的计算逻辑,跳过了÷30×7的日单位转换步骤,导致结果不符合预期。
修改后的代码
import numpy as np filtered_df2['occupational'] = filtered_df2['continuous'].apply(lambda x: 1623500 if x < 4 else 1801600 if x < 25 else 1848600 if x < 49 else 1894500) # 先转日单位再向上取整到十位 filtered_df2['occupationaltotal'] = filtered_df2['occupational'].apply( lambda x: np.ceil((x / 30 * 7) / 10) * 10 )
逻辑说明
- 保留原有的
occupational字段赋值逻辑不变 - 针对
occupationaltotal字段,按以下步骤计算:- 先执行
x /30 *7,将月度数值转换为7日单位的数值 - 将转换后的数值除以10,缩小量级以便对十位取整
- 用
np.ceil()对缩小后的数值向上取整 - 最后乘以10还原量级,得到十位对齐的结果
- 先执行
以1801600为例:1801600 /30 *7 ≈420373.333 → 420373.333 /10=42037.333 → np.ceil(42037.333)=42038 → 42038*10=420380,完全匹配需求。
内容的提问来源于stack exchange,提问作者kkerk
相关产品推荐
相关产品推荐

