我有一些典型的股票数据。我希望创建一个名为"Volume_Count“的列,它将计算每个季度的0卷天数。我的最终目标是在一个季度内清除所有零成交量超过5天的股票。通过创建本列,我可以为子集Vol_Count > 5编写一个简单的语句。
典型的数据集:
Stock Date Qtr Volume
XYZ 1/1/19 2019 Q1 0
XYZ 1/2/19 2019 Q1 598
XYZ 1/3/19 2019 Q1 0
XYZ 1/4/19 2019 Q1 0
XYZ 1/5/19 2019 Q1 0
XYZ 1/6/19 2019 Q1 2195
XYZ 1/7/19 2019 Q1 0
... ... and so on (for multiple stocks and quarters)这就是我试过的-一艘1班轮-
df = df.groupby(['stock','Qtr'], as_index=False).filter(lambda x: len(x.Volume == 0) > 5) 然而,如前所述,这产生了不一致的结果。
我只想将股票从数据集中移除5天或更多天的卷== 0的季度。
注意:我有多个股票和Qtr在我的数据集中,因此它是必要的群Qtr,股票。
期望输出:我希望保留数据集,但如果qtr的卷=0超过5天,则删除它们的所有库存。这可能意味着股票不在2019年Q1的数据集中(因为Vol.==0 >5天),而是在2019年的df中(Vol.==0<5天).
发布于 2019-03-29 17:58:52
试试这个:
df[df['Volume'].eq(0).groupby([df['Stock'],df['Qtr']]).transform('sum') < 5]详细信息。
groupby和transform将该总和分配给每个记录。https://stackoverflow.com/questions/55422955
复制相似问题