熊猫按月计算交易次数

时间:2018-08-20 20:25:39

标签: python python-3.x pandas pandas-groupby

我有一个数据框,其中有信号要输入/退出第long列中的交易,索引为日期。 long看起来像这样(True值表示您持有职位,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

自我们在一月份开始交易并在整个月的整个剩余时间内保持1月1日以来,自我们退出一月份交易(不视为新交易)以来一直保持2月1日,但是一天之后我们确实进行了一项新交易(假设我们在本月的剩余时间中什么都没做

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

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

在这种情况下,多头= 4,因此除以2(每两个“点”代表交易的生命周期)将为我提供有效的交易次数

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

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法检查一个月内从FalseTrue的旅行次数:

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