Вокруг одного столбца в pandas

Есть ли способ округлить один столбец в pandas, не затрагивая остальную часть фрейма данных?

 df:
      item  value1  value2
    0    a    1.12     1.3
    1    a    1.50     2.5
    2    a    0.10     0.0
    3    b    3.30    -1.0
    4    b    4.80    -1.0

df.value1.apply(np.round) дает

0    1
1    2
2    0
3    3
4    5
5    5

Каков правильный способ сделать данные похожими на:

  item  value1  value2
0    a       1     1.3
1    a       2     2.5
2    a       0     0.0
3    b       3    -1.0
4    b       5    -1.0
5    c       5     5.0

Ответы

Ответ 1

Вы очень близки Вы применили раунд к серии значений, заданных df.value1. Тип возврата, таким образом, является Серией. Вам необходимо присвоить эту серию обратно фрейму данных (или другому фрейму данных с тем же индексом).

Кроме того, существует метод pandas.Series.round, который по сути является сокращением для pandas.Series.apply(np.round).

In[2]: 
    df.value1 = df.value1.round()
    print df

Out[2]:
    item  value1  value2
    0    a       1     1.3
    1    a       2     2.5
    2    a       0     0.0
    3    b       3    -1.0
    4    b       5    -1.0

Ответ 2

По какой-то причине метод round() не работает, если у вас есть числа с плавающей запятой со многими десятичными разрядами, но это сработает.

decimals = 2    
df['column'] = df['column'].apply(lambda x: round(x, decimals))

Ответ 3

Простое понимание списка сделает свое дело

decimals = 2 
df['column'] = [round(x, decimals) for x in df['column']]