我有一个带有浮点数列的数据帧.例如:
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?
我的问题是什么是更好,更有效的方式.
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()