gpt4 book ai didi

Python pandas 每月重新采样每周工作不会

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

尝试定义股票数据的每月和每周范围。下面的代码仅适用于最高值,适用于每月,但不适用于每周。当我尝试在 df 中创建每周的新列时,我得到所有 NaN 。另外,如果我使用变量而不是新列,我会得到正确的结果。

test = df['High'].resample('w',how='max')
print test

...
2015-03-01 212.24
2015-03-08 212.06
2015-03-15 208.79
2015-03-22 211.27
2015-03-29 211.11
2015-04-05 208.61
Freq: W-SUN, Name: High, Length: 70



df['WHigh'] = df['High'].resample('w',how='max')
print df['WHigh']

...
2015-03-26 NaN
2015-03-27 NaN
2015-03-30 NaN
2015-03-31 NaN
2015-04-01 NaN
2015-04-02 NaN
Name: WHigh, Length: 336

最佳答案

问题在于原始索引与重新采样的索引不同,因此您无法将其分配回原始 DataFrame(作为列)。

<小时/>
In [11]: df = pd.DataFrame([1, 2, 3, 4, 5, 6], pd.date_range('2015-01-01', periods=6))

In [12]: df
Out[12]:
0
2015-01-01 1
2015-01-02 2
2015-01-03 3
2015-01-04 4
2015-01-05 5
2015-01-06 6

In [13]: df.resample('W')
Out[13]:
0
2015-01-04 2.5
2015-01-11 5.5

In [14]: df['weekly'] = df.resample('W')

In [15]: df
Out[15]:
0 weekly
2015-01-01 1 NaN
2015-01-02 2 NaN
2015-01-03 3 NaN
2015-01-04 4 2.5
2015-01-05 5 NaN
2015-01-06 6 NaN

看到只有与周代表匹配的那一天被填充,其他一切都是NaN。

<小时/>

如果您想将该周的所有值设置为平均值/最大值,请使用转换:

In [21]: df.groupby(pd.TimeGrouper('W')).transform('mean')
Out[21]:
0
2015-01-01 2
2015-01-02 2
2015-01-03 2
2015-01-04 2
2015-01-05 5
2015-01-06 5

注意:这里可能有一个错误,在我看来它应该是 float 的!

In [22]: df.astype('float64').groupby(pd.TimeGrouper('W')).transform('mean')
Out[22]:
0
2015-01-01 2.5
2015-01-02 2.5
2015-01-03 2.5
2015-01-04 2.5
2015-01-05 5.5
2015-01-06 5.5

关于Python pandas 每月重新采样每周工作不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29437029/

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