Pandas:使用np.round和applymap在数据框中舍入中间值

时间:2015-12-15 13:54:02

标签: numpy pandas decimal rounding

我想明白为什么在使用1)np.round和2)applymap在同一个DF上获得不同的值

我的df

 df1 = pd.DataFrame({'total': [25.23, 3.55, 76.55, 36.48, 45.59]}, index=['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

      total
cat1  25.23
cat2   3.55
cat3  76.55
cat4  36.48
cat5  45.59

np.round返回

np.round(df1, 1)
      total
cat1   25.2
cat2    3.6
cat3   76.6
cat4   36.5
cat5   45.6

appymap返回

df1.applymap(lambda x: round(x,1))
      total
cat1   25.2
cat2    3.5
cat3   76.5
cat4   36.5
cat5   45.6

正如您所看到的,np.round在应用映射向下舍入时将中间值向上舍入。发生了什么事?

1 个答案:

答案 0 :(得分:1)

这是python 2中记录的行为:round和python 3中的np.around得到相同的结果:

In [63]:
np.round(df1['total'], 1)

Out[63]:
cat1    25.2
cat2     3.6
cat3    76.6
cat4    36.5
cat5    45.6
Name: total, dtype: float64

In [69]:
df1.applymap(lambda x: round(x,1))

Out[69]:
      total
cat1   25.2
cat2    3.6
cat3   76.6
cat4   36.5
cat5   45.6