【问题标题】:Can I add a conditional count() to a groupby dataframe where the condition is a groupby result?我可以将条件 count() 添加到条件为 groupby 结果的 groupby 数据框中吗?
【发布时间】:2018-07-16 22:29:48
【问题描述】:

我有一个名为 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 的索引,但这给了我实际的整数索引 here

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

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

【问题讨论】:

    标签: python pandas conditional pandas-groupby


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2019-02-27
      • 2016-02-14
      • 2021-02-10
      • 1970-01-01
      相关资源
      最近更新 更多