Биннинг непрерывной переменной с использованием pandas.cut

Я пытаюсь получить непрерывную переменную (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
                                                           )

Спасибо!

0
0
157
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема не в 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()

Другие вопросы по теме