gpt4 book ai didi

python - 上采样数据时均等分割值

转载 作者:行者123 更新时间:2023-12-01 07:58:29 24 4
gpt4 key购买 nike

使用 Python 中的 pandas 库,我尝试将一些数据从每月值上采样到每日值。有没有办法将一个值均匀地分配到其生成的“子项”上?

举个例子,假设我在一月和二月都行驶了 100 公里:

In[1]: distPerMonth = pd.Series([100, 100], index=pd.PeriodIndex(['2019-01', '2019-02'], freq='M'))

In[2]: distPerMonth
Out[2]:
2019-01 100
2019-02 100
Freq: M, dtype: int64

现在我想计算每天的费用,从

开始
In[3]: distPerMonth.resample('D')....

这应该导致

Out[3]:
2019-01-01 3.225806451612903
2019-01-02 3.225806451612903
...
2019-02-27 3.5714285714285716
2019-02-28 3.5714285714285716
Freq: M, dtype: float64

(二月的值高于一月的值,因为我在更少的时间内行驶了相同的距离。)

我正在寻找一种将“聚合器”函数传递到重新采样的数据集的方法,其中原始值、原始时间段和“子”时间段可用。

非常感谢!

<小时/>

PS:什么不起作用是使用像这样的自定义函数:

In[3]: distPerMonth.resample('D').apply(custom_function)

因为对于此功能,只有子系列可用(大多数情况下为空)。我想我可以使用这些子系列来推断父级的时间段,然后使用父系列来获取相应的父级值,以某种方式计算有多少个子级,并将父级值除以这个数字,但这似乎是一个处理事情的方式过于复杂。

<小时/>

对于那些稍后阅读这个问题的人:接受的解决方案适用于无间隙时间序列的情况。如果行之间有间隙,请查看 this question .

最佳答案

您可以使用:

m=distPerMonth.resample('D').first()
m.groupby(m.notna().cumsum()).apply(lambda x: x/len(x.index)).ffill()
<小时/>
2019-01-01    3.225806
2019-01-02 3.225806
2019-01-03 3.225806
2019-01-04 3.225806
...
...
2019-02-25 3.571429
2019-02-26 3.571429
2019-02-27 3.571429
2019-02-28 3.571429

关于python - 上采样数据时均等分割值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55826474/

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