python - pandas - 根据时间序列中的变化指示创建重复数据
问题描述
我有一个指示位置变化的时间序列,如下所示:
08-09-2018 17:00:00, user_1, home
08-09-2018 18:30:00, user_2, home
08-09-2018 18:40:00, user_1, recreation center
我需要创建“桶”(在本例中,可能每 15m 一次),并且我需要用最后一个桶中的内容填充每个桶,如下所示:
08-09-2018 17:00:00, user_1, home
08-09-2018 17:15:00, user_1, home
08-09-2018 17:30:00, user_1, home
08-09-2018 17:45:00, user_1, home
08-09-2018 18:00:00, user_1, home
08-09-2018 18:15:00, user_1, home
08-09-2018 18:30:00, user_1, home
08-09-2018 18:30:00, user_2, home
08-09-2018 18:45:00, user_1, recreation center
08-09-2018 18:45:00, user_2, home
08-09-2018 19:00:00, user_1, recreation center
08-09-2018 19:00:00, user_2, home
从那里我会得到位置名称的虚拟数据..但那部分我知道该怎么做:)如果有帮助,请随意将其分组如下:
pd.crosstab([locationDf.date, locationDf.user], locationDf.location)
我该怎么做第一部分?
我可以这样做:
对于用户,locDf.groupby('user') 中的 user_loc_dc: user_loc_dc.resample('15T').agg('max').ffill() # 只需附加这些
解决方案
使用pd.resample()
和ffill()
:
dates = [pd.Timestamp('08-09-2018 17:00:00'), pd.Timestamp('08-09-2018 18:30:00'), pd.Timestamp('08-09-2018 18:40:00'), pd.Timestamp('08-09-2018 19:00:00')]
data = [['user_1', 'home'], ['user_2', 'home'], ['user_1', 'recreation center'], ['user_2', 'home']]
resampled = pd.Series(data, dates).resample('15T').ffill()
产量:
2018-08-09 17:00:00 [user_1, home]
2018-08-09 17:15:00 [user_1, home]
2018-08-09 17:30:00 [user_1, home]
2018-08-09 17:45:00 [user_1, home]
2018-08-09 18:00:00 [user_1, home]
2018-08-09 18:15:00 [user_1, home]
2018-08-09 18:30:00 [user_2, home]
2018-08-09 18:45:00 [user_1, recreation center]
2018-08-09 19:00:00 [user_2, home]
Freq: 15T, dtype: object
推荐阅读
- python - 无法从给定的代码中获得所需的输出?
- c++ - 用 C++ 在 ESP32 上连接 wifi
- python - 如何在 reddit 帖子上找到赞成票的数量
- swift - 无法单击 iOS 14 中 TableViewCell 内的按钮
- python - 我的快速排序 Python 代码有问题吗?
- networkx - Barabási-Albert 模型与 Erdos-Renyi 模型的区别
- python - 如何仅在 python 中使用 pyqt5 按下并按住按钮时运行我的函数
- sap - 添加到业务对象 Universe
- angular - Angular10 - Safari 错误:“提供的动画属性 'offset' 不是动画支持的 CSS 属性
- javascript - ReactJS Background Image not Showing