Pandas按周分组日期

3

我正在使用pandas进行一些计算,需要根据每周或每日的日期对count1和count2等某些值进行求和。

我的数据框df=

   id  count1  ... count2        date
0   1        1  ... 52       2019-12-09
1   2        1  ... 23       2019-12-10
2   3        1  ... 0        2019-12-11
3   4        1  ... 17       2019-12-18
4   5        1  ... 20       2019-12-20
5   6        1  ... 4        2019-12-21
6   7        1  ... 2        2019-12-21

如何按周频率分组日期?

我尝试了多种方法,但是出现了不同的错误。

非常感谢。

2个回答

8

使用 DataFrame.resample 方法,通过按周重新采样数据,并使用 sum 函数:

#convert date column to datetimes
df['date'] = pd.to_datetime(df['date'])

df1 = df.resample('W', on='date')['count1','count2'].sum()

或者使用Grouper

df1 = df.groupby(pd.Grouper(freq='W', key='date'))['count1','count2'].sum()

print (df1)
            count1  count2
date                      
2019-12-15       3      75
2019-12-22       4      43

1
非常感谢。我尝试了分组和重采样的两种方法,但是我错过了第一步——df['date'] = pd.to_datetime(df['date']) - Hisham
我正在使用“groupby”的方式,但是该列没有被分配为“count1”和“count2”,并且仅显示总和值,您知道如何显示列名“count1”和“count2”吗? - nakli_batman
我认为你需要调用.reset_index()来获取所有的系列。 - VaporwareWolf

0
首先,生成一个星期列,以便您可以按其进行分组;
df['week_id'] = df['date'].dt.week

然后对数据框进行分组,迭代每个组并执行您的操作:

grouped_df = df.groupby('week_id')
for index, sub_df in grouped_df:
    #use sub_df, it is data for each week

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接