合并具有不同时间戳(不同时间间隔)的两个数据帧
Posted
技术标签:
【中文标题】合并具有不同时间戳(不同时间间隔)的两个数据帧【英文标题】:Merging two dataframes with different timestamp (different time interval) 【发布时间】:2021-01-09 05:47:53 【问题描述】:我有两个不同的数据框。 Df1 具有不同时间间隔的时间戳,如下所示
time sales
2019-01-01 2:00:00 20000
2019-01-01 2:20:00 15600
2019-01-01 2:40:00 15444
...
2019-12-01 3:00:00 13000
2019-12-01 3:30:00 650
Df2 的时间戳为 1 分钟时间间隔,如下所示
time ratings
2019-01-01 2:01:00 0.04
2019-01-01 2:02:00 0.04
2019-01-01 2:03:00 0.04
2019-01-01 2:04:00 0.04
...
2019-12-01 3:00:00 0.01
2019-12-02 3:01:00 0.01
我想合并两个数据框,如下所示
time sales ratings
2019-01-01 2:00:00 20000 [mean of ratings from 2:00:00 ~2:19:00]
2019-01-01 2:20:00 15600 [mean of ratings from 2:20:00 ~2:39:00]
2019-01-01 2:40:00 15444 [mean of ratings from 2:40:00 ~2:59:00]
如果有任何帮助,我将不胜感激!谢谢你:)
【问题讨论】:
【参考方案1】:我们试试pd.cut
:
lower_bounds = pd.cut(df2['time'],
bins=list(df1['time']) + [pd.to_datetime('2050-01-01')],
right=False, include_lowest=True,
labels=df1['time'])
df1['ratings'] = (df2.groupby(lower_bounds)
['rating'].mean()
.reindex(df1['time'])
.values
)
或者你可以使用merge_asof
:
df1['ratings'] = pd.merge_asof(df2, df1.reset_index(),
on='time',
direction='backward'
).groupby('index')['rating'].mean()
【讨论】:
非常感谢!这完美解决了我的问题。以上是关于合并具有不同时间戳(不同时间间隔)的两个数据帧的主要内容,如果未能解决你的问题,请参考以下文章