我有一个带有名称limitdata的两列数据框
CcyPair,TradeNotional
USDCAD,1000000
USDCAD,7600
USDCAD,40000
GBPUSD,100000
GBPUSD,345000
etc
每人CCYPAIR和Tradenotional的CCYPAIR。从这里我产生摘要统计信息如下
limitDataStats = limitData.groupby(['CcyPair']).describe()
这很容易。但是,我想向sumstats添加一列,其中包含传统的计数大于ccypair的75%由limitdatastats中存储的.deScribe((确定的75%。我已经搜索了很多,尝试了许多变体,但无法弄清楚。认为它应该沿着下面的路线(我认为我可以参考此处提到的Groupby的索引
limitData.groupby(['CcyPair'])['AbsBaseTrade'].apply(lambda x: x[x > limitDataStats.loc[x.index , '75%']].count())
有什么想法吗?谢谢,Colin
您可以过滤大于第75个百分位数,然后计算多少大于或等于该值(使用的.sum()
(由于Boolean系列是从ge()
返回(
limitData.groupby('CcyPair')['AbsBaseTrade'].apply(
lambda x: x.ge(x.quantile(.75)).sum()))