【问题标题】:How to aggregate geographically segregated data by date in python?如何在python中按日期聚合地理隔离的数据?
【发布时间】:2022-01-07 15:39:29
【问题描述】:

我正在处理按多个地理级别(省和卫生区域)细分的时间序列数据。数据按年龄组进一步细分。我想根据需要先将数据汇总到卫生区域,然后再汇总到省。

样本数据:

df = pd.DataFrame({'Date':['1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022'],
             'province':[35,35,35,35,35,35,35,35,35,],'health region':[1,1,1,2,2,2,3,3,3],
              'age group':[1,2,3,1,2,3,1,2,3],'cases':[6,1,9,7,9,0,4,2,2]})

聚合到健康区域级别时的期望输出:

df_hr = pd.DataFrame({'Date':['1/1/2022','1/1/2022','1/1/2022'],
                     'province':[35,35,35],
                     'health region':[1,2,3],'cases':[16,16,8]})

当我使用以下代码时:

df = df.groupby('health region').sum()

我失去了约会。

当我尝试时:

df =  df.groupby(['health region','Date']).sum()

df =  df.groupby(['health region',df['Date'].dt.date).sum()

我收到一个错误ValueError: mixed datetimes and integers in passed array

有没有简单的方法来做到这一点?我正在考虑使用循环按健康区域拆分数据,保存唯一日期,聚合,合并日期,然后将健康区域重新堆叠在一起。但如果有一种简单的方法可以做到这一点,我宁愿不这样做。

谢谢你, i.

【问题讨论】:

  • 请不要分享图片,因为我们无法在我们的终端复制您的示例输入。相反,请通过与预期输出共享示例输入数据框来提供可重现的示例。
  • 您是否将df['Date'] 解析为日期时间?

标签: python pandas datetime pandas-groupby


【解决方案1】:

我想出了一个办法。

首先需要将日期转换为日期时间,并将其设置为索引:

df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date',inplace = True)

然后我可以按地区分组并按天重新采样数据

df1 = df.groupby('health region').resample('D').sum()

并重置索引

df1 = df1.reset_index()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多