[英]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.