首页 > 解决方案 > 熊猫:groupby然后检索IQR

问题描述

我对 Pandas 很陌生,我正在尝试做以下事情:

我有两个数据框commsarts看起来像这样(除了它们与其他列的广告更长)

通讯:

ID    commScore           
10       5                
10       3                  
10      -1                 
11       0                
11       2              
12       9      
13      -2     
13      -1     
13       1      
13       4

艺术:

ID    commNumber
10        3 
11        2    
12        1
13        4      

我需要comms按他们的 ID 进行分组,然后将每个 ID 的 commScore 分布的四分位间距 ( IQRarts ) 保存在(显然是在正确的 ID 行中) 。

我已经尝试过使用groupby,aggmap ,但是由于我对 pandas 的概念非常有限,所以我无法做到我想要的。

有没有人有办法解决吗?

谢谢

安德烈亚

标签: pythonpandasdataframepandas-groupbyquantile

解决方案


我们可以使用函数from来计算group数据框ID并聚合列来计算四分位数间距,然后将这个计算的范围放在数据框的列上commScoreiqrscipy.statsmapiqrIDarts

from scipy.stats import iqr

arts['IQR'] = arts['ID'].map(comms.groupby('ID')['commScore'].agg(iqr))

   ID  commNumber  IQR
0  10           3    3
1  11           2    1
2  12           1    0
3  13           4    3

推荐阅读