代码之家  ›  专栏  ›  技术社区  ›  Yuca

熊猫按月计算交易次数

  •  2
  • Yuca  · 技术社区  · 6 年前

    我有一个数据框,有进入/退出以旧换新栏的信号 long ,索引是date。 长的 看起来像这样(True value表示你持有一个职位,False表示你不再持有一个职位):

    2010-01-04    False
    2010-01-05    False
    2010-01-06    False
    2010-01-07    False
    2010-01-08    False
    2010-01-11    False
    2010-01-12    False
    2010-01-13    False
    2010-01-14     True
    2010-01-15     True
    2010-01-19     True
    2010-01-20     True
    2010-01-21     True
    2010-01-22     True
    2010-01-25     True
    2010-01-26     True
    2010-01-27     True
    2010-01-28     True
    2010-01-29     True
    2010-02-01     True
    2010-02-02     True
    2010-02-03     True
    2010-02-04     True
    2010-02-05     True
    2010-02-08     True
    2010-02-09     False
    2010-02-10     True
    2010-02-11     True
    2010-02-12     False
    2010-02-16     False
    

    所以对于我的数据,我应该得到如下输出

    2010-01 1
    2010-02 1
    

    我有下面的代码来计算分配中的变化数量,但是我不知道如何有效地按月分割新交易的数量

    longs = (df.long-df.long.shift()).ne(0)
    

    在这种情况下,long=4,所以除以2(每两个“勾号”代表一个交易的生命周期)将得到有效的交易数量

    如何计算每月开始的交易数量?

    1 回复  |  直到 6 年前
        1
  •  1
  •   user3483203    6 年前

    你可以检查你从 False True 在一个月内使用:

    s = (df.long & ~df.long.shift().fillna(False)).astype(int)
    

    然后只需分组并求和:

    s.groupby(pd.Grouper(freq='MS')).sum()
    
    2010-01-01    1
    2010-02-01    1
    Freq: MS, Name: flag, dtype: int32