redondear una sola columna en pandas

¿Hay una manera de redondear una sola columna en pandas sin afectar el rest del dataframe?

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) da

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

¿Cuál es la forma correcta de hacer que los datos se vean así?

  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 

Estás muy cerca. Aplicó la ronda a la serie de valores dados por df.value1 . El tipo de retorno es por lo tanto una serie. Debe asignar esa serie nuevamente al dataframe (u otro dataframe con el mismo Índice).

Además, hay un método pandas.Series.round que es básicamente una mano corta para 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 

Por alguna razón, el método round () no funciona si tiene números flotantes con muchos decimales, pero esto funcionará.

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