将数据框结果与DatetimeIndex索引合并

时间:2018-09-09 12:04:54

标签: python python-3.x pandas

我有一个熊猫数据框,每分钟都有随机值。

import pandas as pd
import numpy as np

df = pd.DataFrame(data=np.random.randint(0,30,size=20), index=pd.date_range("20180101", periods=20, freq='T'))

df
                      0
2018-01-01 00:00:00  21
2018-01-01 00:01:00  21
2018-01-01 00:02:00  23
2018-01-01 00:03:00  18
2018-01-01 00:04:00   3
2018-01-01 00:05:00  11
2018-01-01 00:06:00   3
2018-01-01 00:07:00   4
2018-01-01 00:08:00   5
2018-01-01 00:09:00  25
2018-01-01 00:10:00  15
2018-01-01 00:11:00  11
2018-01-01 00:12:00  29
2018-01-01 00:13:00  22
2018-01-01 00:14:00   7
2018-01-01 00:15:00  13
2018-01-01 00:16:00  26
2018-01-01 00:17:00   7
2018-01-01 00:18:00  26
2018-01-01 00:19:00  15

现在,我必须在数据帧df中创建一个新列,以较高的频率(5分钟)“反映”两个周期的窗口的均值。

df2 = df.resample('5T').sum().rolling(2).mean()

df2
                        0
2018-01-01 00:00:00   NaN
2018-01-01 00:05:00  67.0
2018-01-01 00:10:00  66.0
2018-01-01 00:15:00  85.5

问题来了。我需要以某种方式“映射”“较高频率”帧的值到较低值。 我应该得到类似的东西:

                      0     new_column
2018-01-01 00:00:00  21     NaN
2018-01-01 00:01:00  21     NaN
2018-01-01 00:02:00  23     NaN
2018-01-01 00:03:00  18     NaN
2018-01-01 00:04:00   3     NaN
2018-01-01 00:05:00  11     67.0
2018-01-01 00:06:00   3     67.0
2018-01-01 00:07:00   4     67.0
2018-01-01 00:08:00   5     67.0
2018-01-01 00:09:00  25     67.0
2018-01-01 00:10:00  15     66.0
2018-01-01 00:11:00  11     66.0
2018-01-01 00:12:00  29     66.0
2018-01-01 00:13:00  22     66.0
2018-01-01 00:14:00   7     66.0
2018-01-01 00:15:00  13     85.5
2018-01-01 00:16:00  26     85.5
2018-01-01 00:17:00   7     85.5
2018-01-01 00:18:00  26     85.5
2018-01-01 00:19:00  15     85.5

我正在使用熊猫0.23.4

2 个答案:

答案 0 :(得分:2)

您可以使用:

df['new_column'] = df2[0].repeat(5).values

5为重采样因子

答案 1 :(得分:2)

您可以同时pd.concatfillforward

df3=pd.concat([df,df2],axis=1).ffill()