为了账号安全,请及时绑定邮箱和手机立即绑定

如何以一系列精度舍入一系列熊猫值?

如何以一系列精度舍入一系列熊猫值?

绝地无双 2023-03-08 17:28:40
我正在尝试用 1 列值和 1 列精度对 DataFrame 进行舍入。>>> df = pd.DataFrame({'value': [1.111, 2.222, 3.333, 4.444], 'precision': [1,2,2,1]})>>> df   precision  value0          1  1.1111          2  2.2222          2  3.3333          1  4.444要创建rounded这样的列:>>> df   precision  value  rounded0          1  1.111     1.11          2  2.222     2.222          2  3.333     3.333          1  4.444     4.4我尝试了直观的解决方案:>>> df['rounded'] = round(df['value'], df['precision'])Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/Users/Drew/Library/Python/2.7/lib/python/site-packages/pandas/core/series.py", line 93, in wrapper    "{0}".format(str(converter)))TypeError: cannot convert the series to <type 'float'>和>>> df['rounded'] = df['value'].round(df['precision'])Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/Users/Drew/Library/Python/2.7/lib/python/site-packages/pandas/core/series.py", line 1999, in round    result = com.values_from_object(self).round(decimals)  File "/Users/Drew/Library/Python/2.7/lib/python/site-packages/pandas/core/series.py", line 93, in wrapper    "{0}".format(str(converter)))TypeError: cannot convert the series to <type 'int'>有没有办法在不遍历每一行的情况下做到这一点?
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

In [45]: df.apply(lambda x: round(x["value"], int(x["precision"])), axis=1)

Out[45]:

0    1.10

1    2.22

2    3.33

3    4.40


查看完整回答
反对 回复 2023-03-08
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

使用列表理解将变量传递给np.round


  df = pd.DataFrame({'value': [1.111, 2.222, 3.333, 4.444], 'precision': [1,2,3,1]})

print(df)


 value  precision

0  1.111          1

1  2.222          2

2  3.333          3

3  4.444          1


df['rounded'] = [np.around(x,y) for x,y in zip(df['value'],df['precision'])]

print(df)



    value  precision  rounded

0  1.111          1    1.100

1  2.222          2    2.220

2  3.333          3    3.333

3  4.444          1    4.400


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号