我可以将条件 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()))
我有一个名为 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()))