使用 pandas.cut 分箱连续变量
Binning continuous variable using pandas.cut
我正在尝试使用 pd.cut 对连续变量(net_revenue -> 范围 -2000 到 455)进行分箱。但是我得到了
SettingWithCopy 错误
(试图在 DataFrame 的切片副本上设置一个值。
尝试使用 .loc[row_indexer,col_indexer] = value 代替
请参阅文档中的注意事项: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()
我正在尝试使用 pd.cut 对连续变量(net_revenue -> 范围 -2000 到 455)进行分箱。但是我得到了
SettingWithCopy 错误
(试图在 DataFrame 的切片副本上设置一个值。 尝试使用 .loc[row_indexer,col_indexer] = value 代替
请参阅文档中的注意事项: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()