#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
создается. Возможно, вы создали его, отфильтровав что-то большее.