【问题标题】:Count 1's in a time series divided into weeks在划分为周的时间序列中计数 1
【发布时间】:2021-06-07 11:58:53
【问题描述】:

我有一个如下所示的数据框:

df =

date          val1  
01/02/2021    2.0   
02/02/2021    2.0   
03/02/2021    1.0   
04/02/2021    1.5   
05/02/2021    10.0  
06/02/2021    7.0   
07/02/2021    4.0   

然后我创建另一个列,如果val1 高于例如1 5,否则0,即:

import numpy as np
import pandas as pd

df['above_five'] = np.where(df['val1'] > 5.0, 1, 0)

哪个会返回:

df =

date          val1    above_five 
01/02/2021    2.0     0
02/02/2021    2.0     0
03/02/2021    1.0     0
04/02/2021    1.5     0
05/02/2021    10.0    1
06/02/2021    7.0     1
07/02/2021    4.0     0

我的下一步是我有点不确定。我现在希望将数据框“压缩”为每周周期,但使用新列或计算该周 1 出现次数的东西。

我试过这个,但这很重要,所以它似乎并不专注于 1:

new_df = df.resample('W', on='date').count()

实际上输出应该是这样的(假设01/02/2021 是星期一):

final_df =

date          above_five_counts
Week 1*       2

*或只是表明这是第一周的某个日期,例如一周的第一天或最后一天。

【问题讨论】:

  • count 为您提供每组中每列中非空值的数量。你要sum以上_五栏:df.resample('W', on='date')['above_five'].sum()

标签: python pandas


【解决方案1】:

在周级别上使用分组

new_df = df.groupby([pd.Grouper(key='date', freq='W-MON')])['above_five'].sum()

代码取自这个问题:group by week in pandas

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2021-03-02
    • 2016-09-07
    • 2012-02-18
    相关资源
    最近更新 更多