【发布时间】:2019-08-29 00:16:44
【问题描述】:
我有一个像这样的数据集:
id date value
1 16-12-1 9
1 16-12-1 8
1 17-1-1 18
2 17-3-4 19
2 17-3-4 20
1 17-4-3 21
2 17-7-13 12
3 17-8-9 12
2 17-9-12 11
1 17-11-12 19
3 17-11-12 21
上面唯一的结构是行是按日期排序的。
我想要做的是,按 id 分组并重新采样日期,以便每个 id 具有相同的数值。每月、每周或每天重新采样就足够了。
我的最终数据集(每年重采样)如下所示:
id interval value
1 16-12-1 - 17-12-1 75
2 16-12-1 - 17-12-1 62
3 16-12-1 - 17-12-1 33
如何实现?这会起作用吗(因为我在日期字段中没有秒数,即它不是标准的 pandas 日期时间对象)?
dataframe.groupby(id).resample('year')
有没有更快的方法来做到这一点?
【问题讨论】:
-
您似乎正在寻找
interval列中的最小和最大日期。value列来自标准GROUP BY。您能否解释重新采样必须完成的工作?即您需要在interval列中提供哪些信息? -
@edesz 谢谢,就像上面的最终数据集快照一样,所有 id 的间隔都是相同的,例如[16-12-1 - 17-12-1] 适合所有人。重采样以每周间隔对值进行分组。因此,通过重新采样,我打算为每个 id 具有相同数量的值。重采样将在间隔列的最大和最小日期之间,以使每个 id 具有相同数量的值。
标签: python pandas dataframe time-series pandas-groupby