Категоризация числовых значений в фрейме данных Pandas

#python #pandas #dataframe #lambda #rounding

#python #pandas #фрейм данных #лямбда #округление

Вопрос:

У меня есть pandas фрейм данных, который выглядит следующим образом:

 Y      HePrecip
0      0
0.14   0.19
0.53   0.62
0.86   0.90
  

Я хочу классифицировать HePrecip столбец, группируя значения в интервалы между кварталами (например, [0, .25], [.26, .50], [.51, .75], [.75, 1.0], …)

Я написал следующую лямбда-функцию и вспомогательный метод, чтобы попытаться выполнить это

 def my_round(x):
  return math.ceil(x * 4) / 4

df['Categories'] = df.apply(lambda x: my_round(x['HePrecip']), axis=1)
  

Цель состоит в том, чтобы округлить .19 до .25, .62 до .75, .76 до 1.0, например.

Тем не менее, я получаю SettingWithCopyWarning . Это нормально?

 /usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  """Entry point for launching an IPython kernel.
  

Комментарии:

1. pd.cut(df['HePrecip'], bins=np.arange(20)*0.25) ?

2. предупреждение не связано с вашим кодом и больше связано с тем, как df создается. Возможно, вы создали его, отфильтровав что-то большее.