1

我正在对数据表字段进行一些数学运算如下所示

示例 DT:

py_DT = dt.Frame({'junction' : ['BroadwayCycleTrack-N','BroadwayCycleTrack-N',
                 'Burke Gilman Trail','Burke Gilman Trail','Elliot Bay','Elliot Bay'],
                 'time_window' : ['N','MD','M','M','N','MD'],
                 'total_bus' :[3526,8732,6732,9821,6473,9273] 
                 })

我想计算每个路口通过的公交车的百分比为

代码块

py_DT[:,{'perc_of': f.total_bus/dt.sum(f.total_bus)},by(f.junction)]

这里有一个名为 perc_of 的新字段以浮点数形式保存计算值,例如

0.287649 和 0.712351 用于穿越BroadwayCycleTrack-N

在这里,我试图利用 dt.math 模块对浮点数进行四舍五入,因为 DT 中的 F 表达式不允许 python 的入方法。

代码块:

py_DT[:,{'perc_of': dt.math.trunc(f.total_bus/dt.sum(f.total_bus))},by(f.junction)]

py_DT[:,{'perc_of': dt.math.floor(f.total_bus/dt.sum(f.total_bus))},by(f.junction)]

py_DT[:,{'perc_of': dt.math.ceil(f.total_bus/dt.sum(f.total_bus))},by(f.junction)]

py_DT[:,{'perc_of': dt.math.trunc(f.total_bus/dt.sum(f.total_bus))},by(f.junction)]

他们没有计算出将 0.287649 舍入到 0.28 或 0.287,我应该尝试其他任何功能吗?我正在搜索它的文档,但找不到合适的文档。

4

1 回答 1

1

dt.math.rint()函数(https://datatable.readthedocs.io/en/latest/api/math.html#rint)四舍五入到最接近的整数。

没有直接等效于 python 的round()功能,但欢迎您在https://github.com/h2oai/datatable/issues提出功能请求以实现它。

目前,可以通过将列乘以 10 的幂,然后舍入,然后再次除法来实现四舍五入到特定位数:

dt.math.rint(f[0] * 1000) / 1000
于 2020-01-03T20:34:27.747 回答