我可以将条件 count() 添加到条件是 groupby 结果的 groupby 数据框中吗?

Can I add a conditional count() to a groupby dataframe where the condition is a groupby result?

我有一个名为 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 的计数大于由存储在 limitDataStats 中的 .describe() 确定的 ccyPair 的 75%。我进行了大量搜索并尝试了多种变体,但无法弄清楚。认为它应该在下面的某个地方(我想我可以参考这里提到的 groupby 的索引,但这给了我实际的整数索引

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

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

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

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