保留输入文件中的最后日期(而不是“Resample”计算的最后一天)时重新采样

2024-04-16 17:57:48 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python pandas(但对任何其他解决方案都开放),我希望对数据帧进行上采样,同时保留输入文件中的最后一个日期。DataFrame.resample的默认工作方式是计算月份的最后一天。下面是我的例子:

>>> import pandas as pd
>>> import numpy as np
>>> begin = pd.datetime(2013,1,1)
>>> end = pd.datetime(2013,2,20)
>>> dtrange = pd.date_range(begin, end, freq='5D')
>>> values = np.random.rand(len(dtrange))*10
>>> df = pd.DataFrame({'values': values}, index=dtrange)
>>> df
              values
2013-01-01  7.763089
2013-01-06  6.032173
2013-01-11  9.747979
2013-01-16  0.856741
2013-01-21  7.111047
2013-01-26  2.654279
2013-01-31  5.222770
2013-02-05  9.578846
2013-02-10  5.088311
2013-02-15  4.193273
2013-02-20  3.345553
>>> df.resample('M', how='last')
              values
2013-01-31  5.222770
2013-02-28  3.345553

我期望的输出是:

^{pr2}$

请注明日期2013-02-20。这是我输入数据中的真实日期,而不是resample创建的日期。在


Tags: 数据importdataframepandasdfdatetimeasnp
1条回答
网友
1楼 · 发布于 2024-04-16 17:57:48

也许不是最花哨的方法,但您可以始终groupby您的时间频率,并应用一个自定义函数返回您想要的。在

从数据帧返回最后一个值的函数:

my_resample = lambda x: x.sort_index().tail(1)

然后按月份频率分组并应用函数:

^{pr2}$

结果是:

              values
2013-01-31  5.167121
2013-02-20  4.829109

相关问题 更多 >