Pandas:groupby 然后检索 IQR

Sal*_*ala 4 python quantile dataframe pandas pandas-groupby

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

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

通讯:

ID    commScore           
10       5                
10       3                  
10      -1                 
11       0                
11       2              
12       9      
13      -2     
13      -1     
13       1      
13       4
Run Code Online (Sandbox Code Playgroud)

艺术:

ID    commNumber
10        3 
11        2    
12        1
13        4      
Run Code Online (Sandbox Code Playgroud)

我需要comms按 ID 进行分组,然后保存(显然在正确的 ID 行中)每个 ID 的 commScore 分布的arts四分位数范围 ( IQR )。

我已经尝试过使用groupby,aggmap ,但由于我的概念pandas非常有限,所以我无法做我正在寻找的事情。

有没有人有办法解决吗?

谢谢

安德里亚

Shu*_*rma 10

我们可以使用from函数group对数据框进行ID聚合列来计算四分位数范围,然后将计算出的范围放在数据框的列上commScoreiqrscipy.statsmapiqrIDarts

from scipy.stats import iqr

arts['IQR'] = arts['ID'].map(comms.groupby('ID')['commScore'].agg(iqr))
Run Code Online (Sandbox Code Playgroud)
   ID  commNumber  IQR
0  10           3    3
1  11           2    1
2  12           1    0
3  13           4    3
Run Code Online (Sandbox Code Playgroud)