首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每一连续期间熊猫的天数

每一连续期间熊猫的天数
EN

Stack Overflow用户
提问于 2022-04-19 08:28:07
回答 1查看 191关注 0票数 1

假设我有下一个df N03_zero (date_code已经是datetime):

代码语言:javascript
复制
item_code       date_code
8028558104973   2022-01-01
8028558104973   2022-01-02
8028558104973   2022-01-03
8028558104973   2022-01-06
8028558104973   2022-01-07
7622300443269   2022-01-01
7622300443269   2022-01-10
7622300443269   2022-01-11
513082          2022-01-01
513082          2022-01-02
513082          2022-01-03

date_code分配给某些item_code的数百万行。我试图得到每个item_code的每一个连续周期的天数,所有其他类似的问题都无助于我。预期的发展方向应该是:

代码语言:javascript
复制
item_code       continuous_days
8028558104973   3
8028558104973   2
7622300443269   1
7622300443269   2
513082          3

一旦天序列中断,它应该在这个序列中计数天数,然后再开始计数。目标是,能够为每个countminmaxmean获取数据格式。

如下所示:

代码语言:javascript
复制
item_code       no. periods   min   max   mean
8028558104973   2             2     3     2.5
7622300443269   2             1     2     1.5
513082          1             3     3     3

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-19 08:30:46

连续几天,用Series.diff比较Series.dt.days对不相等的1Series.cumsum的累积和的天数之差,然后使用GroupBy.size,用DataFrame.droplevel删除二级,创建DataFrame

代码语言:javascript
复制
df['date_code'] = pd.to_datetime(df['date_code'])

df1= (df.groupby(['item_code',df['date_code'].diff().dt.days.ne(1).cumsum()], sort=False)
        .size()
        .droplevel(1)
        .reset_index(name='continuous_days'))
print (df1)
       item_code  continuous_days
0  8028558104973                3
1  8028558104973                2
2  7622300443269                1
3  7622300443269                2
4         513082                3

然后通过GroupBy.agg命名聚合来聚合值。

代码语言:javascript
复制
df2 = (df1.groupby('item_code', sort=False, as_index=False)
          .agg(**{'no. periods': ('continuous_days','size'),
                 'min':('continuous_days','min'),
                 'max':('continuous_days','max'),
                 'mean':('continuous_days','mean')}))
print (df2)
       item_code  no. periods  min  max  mean
0  8028558104973            2    2    3   2.5
1  7622300443269            2    1    2   1.5
2         513082            1    3    3   3.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71921857

复制
相关文章

相似问题

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