gpt4 book ai didi

python - resample 在 Pandas 中给出不同的最终日期

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:18 28 4
gpt4 key购买 nike

当我以这种方式重新采样每周数据时,特别是星期一,我很难理解发生了什么。df 的最后一天是今天,但在重新采样之后,最终日期延长了 1 周,其余的“重新采样”数据似乎不在原始数据框中。

import pandas as pd
import numpy as np
import datetime as dt

today = dt.datetime.now()
end = today
start = end - pd.DateOffset(days=200)
rows = len(pd.date_range(start=start, end=end, freq='B'))

df = pd.DataFrame(np.random.randn(rows,4),
index=pd.date_range(start=start, end=end, freq='B'),
columns =['PX_OPEN', 'PX_LAST', 'PX_HIGH', 'PX_LOW'] )

print df.tail(10)

PX_OPEN PX_LAST PX_HIGH PX_LOW
2015-12-02 14:53:11.532 0.000887 0.277900 -0.306899 -0.698697
2015-12-03 14:53:11.532 -0.149329 -1.601389 -0.202008 -0.091503
2015-12-04 14:53:11.532 -0.377587 1.296413 0.204357 -0.764215
2015-12-07 14:53:11.532 -1.487945 -0.618986 0.843712 0.989913
2015-12-08 14:53:11.532 2.950980 1.290211 0.365665 0.633706
2015-12-09 14:53:11.532 0.156047 0.958483 0.574209 -0.708996
2015-12-10 14:53:11.532 0.696625 -0.547642 -1.299712 1.728022
2015-12-11 14:53:11.532 2.244693 1.034026 -0.914141 -2.604405
2015-12-14 14:53:11.532 0.087407 1.742234 -0.643504 0.812742
2015-12-15 14:53:11.532 1.861020 -0.637109 1.285085 -0.816025

如果我们这样做:

print df.resample('W-MON').tail(5)

PX_OPEN PX_LAST PX_HIGH PX_LOW
2015-11-23 0.003513 -0.246844 -0.031537 0.846289
2015-11-30 -0.338132 0.607998 0.087007 0.394458
2015-12-07 -0.325123 -0.337976 0.129483 -0.136570
2015-12-14 1.227150 0.895462 -0.383497 -0.027786
2015-12-21 1.861020 -0.637109 1.285085 -0.816025

因此,如果您注意到,原始 df 的最后一行的日期为 2015-12-15,但重新采样的 df 的最后一天的日期为 2015-12-21。而且其余的重采样值似乎也没有出现在原始 df 中。

最佳答案

重采样默认为均值。从 12-15 到 12-21 这一周的平均值只是最后一行...

显然默认标签不正确(在文档中;或对于此示例):

In [11]: df.resample('W-MON')
Out[11]:
PX_OPEN PX_LAST PX_HIGH PX_LOW
2015-12-07 -0.503494 -0.161516 0.134791 -0.141126
2015-12-14 1.227150 0.895462 -0.383497 -0.027786
2015-12-21 1.861020 -0.637109 1.285085 -0.816025

In [12]: df.resample('W-MON', label="left")
Out[12]:
PX_OPEN PX_LAST PX_HIGH PX_LOW
2015-11-30 -0.503494 -0.161516 0.134791 -0.141126
2015-12-07 1.227150 0.895462 -0.383497 -0.027786
2015-12-14 1.861020 -0.637109 1.285085 -0.816025

它似乎默认为“正确”。 “左”就是你想要的。

同样,您可能希望关闭左侧(包括):

In [13]: df.resample('W-MON', label="left", closed="left")
Out[13]:
PX_OPEN PX_LAST PX_HIGH PX_LOW
2015-11-30 -0.175343 -0.009025 -0.101517 -0.518138
2015-12-07 0.912080 0.423218 -0.086053 0.007648
2015-12-14 0.974214 0.552563 0.320791 -0.001642

它给出的数字更符合您的预期。

关于python - resample 在 Pandas 中给出不同的最终日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34296258/

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