首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间戳微小方差的时间序列求和

时间戳微小方差的时间序列求和
EN

Stack Overflow用户
提问于 2021-12-12 06:51:52
回答 1查看 40关注 0票数 0

我想我有几个时间序列,如下所示,来自不同的“来源”:

代码语言:javascript
复制
       time     events
0      1000    1080000
1      2003    2122386
2      3007    3043985
3      4007    3872544
4      5007    4853763

这里,每1000毫秒采样一次单调递增的计数事件。抽样并不准确,因此大多数时间戳与其理想值相差几毫秒--例如,第二个点是在2003年而不是2000年。

我想总结其中的几个时间序列:它们都将在1000毫秒左右取样,但可能不同意精确的毫秒数。例如,另一个时间序列可以是:

代码语言:javascript
复制
       time     events
0      1000    1070000
1      2002    2122486
2      3006    3063985
3      4007    3872544
4      5009    4853763

根据最终结果,我想要一些合理的东西。例如,每个输入数据的行数与每个输入数据相同,一个时间戳列与第一个或输入时间的平均值相同。只要输入是平滑的,输出也应该是平滑的。

EN

回答 1

Stack Overflow用户

发布于 2021-12-12 07:17:15

我建议DataFrame.reindex()用最近的方法。示例:

代码语言:javascript
复制
def combine_datasources(reference_df, extra_dfs, tolerance_ms=100):
    reindexed_df_list = [df.reindex(reference_df.index, method='nearest', tolerance=tolerance_ms) for df in extra_dfs]
    combined = pd.concat([reference_df, *reindexed_df_list])
    return combined.groupby(combined.index).sum()

combine_datasources(df_a, [df_b])

此代码更改extra_dfs列表中数据文件上的索引,以匹配引用数据的索引。然后,它将所有的数据连接在一起。它使用groupby来完成和,这要求索引完全匹配才能工作。时间戳将与引用dataframe上的时间戳相同。

请注意,如果您有来自引用dataframe未涵盖的时间段的数据,则该数据将被删除。

以下是您问题中数据集的输出:

代码语言:javascript
复制
       events
time         
1000  2150000
2003  4244872
3007  6107970
4007  7745088
5007  9707526
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70321551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档