我可以在条件为groupby结果的数据帧中添加条件计数()吗?

时间:2018-02-06 19:03:39

标签: python pandas conditional pandas-groupby

我有一个名为limitData的两列数据框,其中第一列是CcyPair,第二列是商业名称

CcyPair,TradeNotional  
USDCAD,1000000  
USDCAD,7600  
USDCAD,40000  
GBPUSD,100000  
GBPUSD,345000  
etc

每个CcyPair都有大量的CcyPair和TradeNotional。从这里我生成摘要统计数据如下

limitDataStats = limitData.groupby(['CcyPair']).describe()

这很容易。但是,我想在sumStats中添加一个列,其中包含的TradeNotional的数量大于ccyPair的75%,该值由存储在limitDataStats中的.describe()确定。我搜索了很多,尝试了很多变化,但无法弄明白。认为它应该在下面的某个地方(我想我可以引用这里提到的groupby的索引但是它给了我实际的整数索引here

limitData.groupby(['CcyPair'])['AbsBaseTrade'].apply(lambda x: x[x > limitDataStats.loc[x.index , '75%']].count())

有什么想法吗?谢谢,科林

1 个答案:

答案 0 :(得分:1)

您可以过滤大于75百分位数的值,然后计算大于或等于该值的值(使用.sum(),因为布尔系列是从ge()返回的)

limitData.groupby('CcyPair')['AbsBaseTrade'].apply(                      
                                    lambda x: x.ge(x.quantile(.75)).sum()))