首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,通过计数0的次数在一列接一列中出现子集。

在python中,通过计数0的次数在一列接一列中出现子集。
EN

Stack Overflow用户
提问于 2019-03-29 17:44:34
回答 1查看 59关注 0票数 1

我有一些典型的股票数据。我希望创建一个名为"Volume_Count“的列,它将计算每个季度的0卷天数。我的最终目标是在一个季度内清除所有零成交量超过5天的股票。通过创建本列,我可以为子集Vol_Count > 5编写一个简单的语句。

典型的数据集:

代码语言:javascript
复制
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班轮-

代码语言:javascript
复制
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天).

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-29 17:58:52

试试这个:

代码语言:javascript
复制
df[df['Volume'].eq(0).groupby([df['Stock'],df['Qtr']]).transform('sum') < 5]

详细信息。

  1. 首先,拿出您的dataframe的音量列,并检查它对于每个记录是否为零。
  2. 接下来,将该列按'Stock‘和'Qtr’列分组,并从步骤1获得每个True值的和,使用groupbytransform将该总和分配给每个记录。
  3. 从之和创建布尔序列,其中True小于5,并使用该序列对原始数据进行布尔索引。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55422955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档