gpt4 book ai didi

python - 查找 pandas 系列中元素之间的所有成对差异

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:29 24 4
gpt4 key购买 nike

全部。

我有一个排序的时间序列 my_ts ,并且我需要找到该系列的所有元素之间的成对差异(低于某个名为 horizon 的阈值)(而不仅仅是连续元素之间)。

我编写了以下代码来执行此操作,但正如您所看到的,它应用了 itertools,这在 pandas 环境中感觉是不必要的。

from itertools import combinations
my_ts = pd.Series(pd.date_range('1/1/2018', periods=6, freq='d'))

def count_gaps(ts, horizon):
# returns counts of all gaps shorter than horizon
diffs = ((t2-t1) for (t1, t2) in combinations(ts, 2) if t2-t1<=horizon)
return pd.Series(diffs).value_counts()

count_gaps(my_ts, horizon=pd.to_timedelta(3, unit='d'))

对于更加 Pandas 化(并且希望更快)的解决方案有什么建议吗?

最佳答案

我认为你可以

s=pd.DataFrame(columns=my_ts,index=my_ts).apply(lambda x : x.name-x.index)

s.mask((s<pd.Timedelta('1 days'))|(s>pd.Timedelta('3 days'))).stack().value_counts()
Out[528]:
1 days 5
2 days 4
3 days 3
dtype: int64

关于python - 查找 pandas 系列中元素之间的所有成对差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49280856/

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