![](/img/trans.png)
[英]Trouble resampling Pandas timeseries data on Python timedelta objects
[英]Resampling timedelta for multivariate data in python pandas
Pandas 还是新手:
我有一些数据(df)是不同人及其变量的时间序列数据。
dataframe 看起来像这样:
date1 date2 person var1 var2
2016-01-04 12:56:00 2016-01-05 00:00:00 1 100 200
2016-01-04 15:11:00 2016-01-05 00:00:00 1 110 120
2016-01-06 18:05:00 2016-01-06 00:00:00 2 220 300
2016-01-07 18:59:00 2016-01-07 00:00:00 2 200 100
2016-01-02 19:30:00 2016-01-02 00:00:00 3 400 500
对于我正在尝试创建 dataframe 的每个人,其中:
所以它看起来像这样:
days person var1 var2
-5 1 0 0
-4 1 0 0
-3 1 0 0
-2 1 0 0
-1 1 X X
0 1 Y Y
...
-5 2 0 0
-4 2 0 0
etc
我尝试使用 timedelta 索引,使用 groupby('person') 和重新采样,但我不知道如何为每个人获取指定的日期范围(-5 到 5)或如何处理多个观察结果。
非常感谢指点,谢谢。
一、准备完整的人员名单和感兴趣的天差
persons = df['person'].unique()
date_diffs = np.arange(-5,6)
然后,为您的“上采样”构建所有可能组合的列表。
person_date_diff_combos = [(person, date_diff) for person in persons for date_diff in date_diffs]
最后,根据需要取平均值,我们首先按person
和date_diff
对数据进行分组,取两个变量的平均值,然后reindex
以创建缺失的行,最后用零填充缺失的行。
df = df.groupby([
'person',
(df['date2'] - df['date1']).dt.days.rename('date_diff'),
])\
[['var1', 'var2']].mean()\
.reindex(person_date_diff_combos, axis=0)\
.fillna(0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.