0

我正在尝试根据我的数据集中一列的四分位范围来标记值,但是在合成两个步骤时遇到了麻烦。下面是一个玩具数据集:

fruit   rating_store   rating_home    

apple   1.0            .8
pear    .8             .9
berry   .9             .4
tomato  .7             .5
orange  .3             .6
banana  .2             .4
...     ...            ...

首先,我试图确定rating_home我可以使用的四分位数范围:

qrating_home = pd.cut(df['rating_home'], 4).value_counts().reset_index()

但是,我现在无法为数据集中的值范围分配标签(例如,“low”、“low_med”、“high_med”、“high qrating_home)。期望的输出:

fruit   rating_store   rating_home   rating_home_quartile 

apple   1.0            .8            high
pear    .8             .9            high
berry   .9             .4            low
tomato  .7             .5            low
orange  .3             .6            low_med
banana  .2             .4            low
...     ...            ...

这篇文章很有帮助,但对范围进行了硬编码:如何在 Pandas DataFrame 中对一系列值进行分类 因为我的数据集可能会随着更多数据的进入而改变,所以每次运行代码时我都需要计算范围。谢谢你的帮助!

4

2 回答 2

0

听起来您想将数据存储在四分位数中。pd.qcut可以很容易地为四分位数、五分位数、十分位数等做到这一点。

df['rating_home_quartile'] = pd.qcut(df['rating_home'], q=4, labels=['low', 'low_med', 'high_med', 'high'])
  • q是分位数
  • labels是对应的分位数名称;确保它匹配给定的分位数q
于 2021-09-29T21:11:34.843 回答
0

我想你想要:

df['rating_home_quartile'] = pd.cut(df['rating_home'], bins=4, 
                                     labels=['low', 'low_med', 'high_med', 'high'])
于 2020-12-21T21:52:55.967 回答