Python pandas 重采样月度作品每周不起作用

2024-09-30 22:11:29 发布

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

尝试定义股票数据的月度和每周范围。下面的代码只适用于高层,它适用于每月,但不适用于每周。当我试图在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

Tags: 数据nametestdf定义nanlengthmax
1条回答
网友
1楼 · 发布于 2024-09-30 22:11:29

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


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。


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

^{pr2}$

注意:可能这里有个bug,应该是float IMO!在

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

相关问题 更多 >