gpt4 book ai didi

python - 如何有效地将两个时间序列组合起来交替使用?

转载 作者:行者123 更新时间:2023-11-28 17:48:28 25 4
gpt4 key购买 nike

假设我有两个很长的系列——大的和小的

index = pd.date_range(start='1952', periods=10**6, freq='s')
big = pd.Series(np.ones(len(index))*97, index)
small = pd.Series(np.ones(len(index))*2, index)

我想要实现的是创建一个新系列,它结合了 bigsmall,在它们的值之间交替,使用 borders 来确定何时切换到另一个(例如每 5 秒有一个边框)

borders = pd.date_range(start='1952', periods=len(index)/5.0, freq='5s')

是否有一种有效的基于矩阵的操作组合可用于实现此目的?我试着查看 docs 中的各种连接、合并等运算符。 , 但找不到任何提供类似逻辑的东西。

我可以使用 for 循环来实现这一点,但即使对于一系列 len() 10^5

也会持续一分钟多
alternating = pd.Series()
for i in range(1, 100, 2):
b0 = borders[i-1]
b1 = borders[i]
b2 = borders[i+1]
sec = pd.offsets.Second(1)
alternating = alternating.append(small[b0:b1-sec]).append(big[b1:b2-sec])

alternating.head(24) 的示例输出

1952-01-16 00:00:00     2
1952-01-16 00:00:01 2
1952-01-16 00:00:02 2
1952-01-16 00:00:03 2
1952-01-16 00:00:04 2
1952-01-16 00:00:05 97
1952-01-16 00:00:06 97
1952-01-16 00:00:07 97
1952-01-16 00:00:08 97
1952-01-16 00:00:09 97
1952-01-16 00:00:10 2
1952-01-16 00:00:11 2
1952-01-16 00:00:12 2
1952-01-16 00:00:13 2
1952-01-16 00:00:14 2
1952-01-16 00:00:15 97
1952-01-16 00:00:16 97
1952-01-16 00:00:17 97
1952-01-16 00:00:18 97
1952-01-16 00:00:19 97
1952-01-16 00:00:20 2
1952-01-16 00:00:21 2
1952-01-16 00:00:22 2
1952-01-16 00:00:23 2

最佳答案

如果您的经期只有几分之一分钟,您可以尝试这样的操作:

index = pd.date_range(start='1952', periods=10**6, freq='s')
big = pd.Series(np.ones(len(index))*97, index)
small = pd.Series(np.ones(len(index))*2, index)

alternating = big[big.index.second % 10 >= 5].combine_first(small)

alternating 看起来完全符合您的要求,并在 150 毫秒内计算。

关于python - 如何有效地将两个时间序列组合起来交替使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360261/

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