当前位置:  开发笔记 > 程序员 > 正文

熊猫:按舍入浮点数组

如何解决《熊猫:按舍入浮点数组》经验,为你挑选了1个好方法。

我有一个带有浮点数列的数据帧.例如:

df = pd.DataFrame({'A' : np.random.randn(100), 'B': np.random.randn(100)})

我想要做的是在将A列四舍五入到小数点后两位按A列分组.

我这样做的方式非常低效:

df.groupby(df.A.map(lambda x: "%.2f" % x))

我特别不希望将所有内容转换为字符串,因为速度成为一个巨大的问题.但我觉得做以下事情并不安全:

df.groupby(np.around(df.A, 2))

我不确定,但我觉得可能存在两个float64数字在舍入到2个小数位后具有相同字符串表示的情况,但是当np.around到2个小数位时可能会有略微不同的表示.例如,1.52的字符串表示是否有可能由np.around(.,2)表示为1.52000001,有时为1.51999999?

我的问题是什么是更好,更有效的方式.



1> 小智..:

我认为您不需要将float转换为string。

import pandas as pd
from random import random
df = pd.DataFrame({'A' : map(lambda x: random(), range(100000)), 'B': map(lambda x: random(), range(100000))})
df.groupby(df['A'].apply(lambda x: round(x, 1))).count()

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有