Вокруг одного столбца в 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']]