gpt4 book ai didi

python - 如何通过 unix 时间戳合并时间序列数据帧

转载 作者:行者123 更新时间:2023-11-28 20:54:57 24 4
gpt4 key购买 nike

我有两个数据帧都包含时间序列数据。两者都有两列,一列是以毫秒为单位的 Unix 时间,另一列包含一个值。 Tyhe 两个数据帧具有不同的采样频率。

数据框1:

    time [s/1000]     DATA1 
0 1558970242000 -0.019531
1 1558970242025 -0.078125
2 1558970242050 -0.058594
3 1558970242075 -0.054688
4 1558970242100 -0.046875
. . .
. . .
. . .

数据框2:

    time [s/1000]     DATA2 
0 1558970242000 -0.054567
1 1558970242050 -0.073567
2 1558970242100 -0.954543
. . .
. . .
. . .

期望的输出:

    time [s/1000]      DATA1        DATA2
0 1558970242000 -0.019531 -0.054567 **hold data for 25ms
1 1558970242025 -0.078125 -0.054567
2 1558970242050 -0.058594 -0.073567
3 1558970242075 -0.054688 -0.073567
5 1558970242100 -0.046875 -0.954543
. . . .
. . . .
. . . .

我在弄清楚如何实现它时遇到了一些麻烦。感谢您的帮助!

最佳答案

这是 merge_asof ( docs ) 的一个很好的用例:

df
time DATA1
0 1558970242000 -0.019531
1 1558970242025 -0.078125
2 1558970242050 -0.058594
3 1558970242075 -0.054688
4 1558970242100 -0.046875

df2
time DATA2
0 1558970242000 -0.054567
1 1558970242050 -0.073567
2 1558970242100 -0.954543

pd.merge_asof(df, df2, on='time')

time DATA1 DATA2
0 1558970242000 -0.019531 -0.054567
1 1558970242025 -0.078125 -0.054567
2 1558970242050 -0.058594 -0.073567
3 1558970242075 -0.054688 -0.073567
4 1558970242100 -0.046875 -0.954543

说明

对于 left DataFrame 中的每一行,默认的 direction='backward' 合并选择右 DataFrame 中的last 行,其 ' on' 键小于或等于左边的键。

在您的情况下,这意味着结果 DataFrame 中的每一行都包含 DATA2 截至行中时间戳的值。 “截至该行的时间戳,这是 DATA2 的最后一个观察值。”

关于python - 如何通过 unix 时间戳合并时间序列数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58139541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com