我有一个名为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())
有什么想法吗?谢谢,科林
答案 0 :(得分:1)
您可以过滤大于75百分位数的值,然后计算大于或等于该值的值(使用.sum()
,因为布尔系列是从ge()
返回的)
limitData.groupby('CcyPair')['AbsBaseTrade'].apply(
lambda x: x.ge(x.quantile(.75)).sum()))