Я пытаюсь получить непрерывную переменную (net_revenue -> диапазон от -2000 до 455), используя pd.cut. Однако я получаю
Ошибка настройки с копированием
(Значение пытается быть установлено для копии фрагмента из DataFrame. Попробуйте вместо этого использовать .loc[row_indexer,col_indexer] = значение
Смотрите предостережения в документации: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy)
Вот мой код,
oct20_df_clean = pd.DataFrame()
oct20_df_clean = oct20_df[(oct20_df['tenure'] >=0) &
(oct20_df['tenure'].notnull()] ]
oct20_df_clean['bin_net_revenue'] = pd.cut(x=oct20_df_clean.loc[:,'net_revenue'],
bins = [-2000, -157.56, -44.81, 0.0, 28.58, 85.0, 114.25, 148.17, 148.58,
148.67, 148.83, 456],
labels = ['1%', '5%', '10%', '25%', '50%', '75%', '90%', '95%','97%',
'99%', '100%'],
precision =2
)
Спасибо!
Проблема не в pd.cut
, а вот в этом:
oct20_df_clean = oct20_df[(oct20_df['tenure'] >=0) &
(oct20_df['tenure'].notnull()]
в котором говорится, что oct20_df_clean
— это часть oct20_df
, которую нельзя изменить. Соедините это с copy
, и все будет хорошо
oct20_df_clean = oct20_df[(oct20_df['tenure'] >=0) &
(oct20_df['tenure'].notnull()
].copy()