将两个每日的数据序列合并成一个每小时的数据序列。

3

我有两个每日系列数据,需要将它们合并成一个小时系列数据,其中第一系列占据前12个小时,第二系列占据其余时间。

除手动构建列表并将其转换为系列数据的方法外,是否有更加高效的方法呢?谢谢。

a = pd.Series(np.random.rand(5), pd.date_range('2015-01-01', periods=5))
b = pd.Series(np.random.rand(5), pd.date_range('2015-01-01', periods=5))
c = an hourly series

也许如果您展示一个非随机数据的例子和您想要的输出,那么更容易理解您的需求。 - holdenweb
1个回答

1
可能:
>>> b.index += dt.timedelta(hours=12)
>>> pd.concat((a, b), axis=0).sort_index()
2015-01-01 00:00:00    0.150
2015-01-01 12:00:00    0.970
2015-01-02 00:00:00    0.746
2015-01-02 12:00:00    0.937
2015-01-03 00:00:00    0.523
2015-01-03 12:00:00    0.392
2015-01-04 00:00:00    0.606
2015-01-04 12:00:00    0.459
2015-01-05 00:00:00    0.221
2015-01-05 12:00:00    0.029
dtype: float64

并且,使用ts.asfreq('H', method='ffill')可以将频率设置为每小时。


谢谢,但实际上我的意思是 - 结果系列应该是每小时的系列,即每天24个数据点,并且在前12个小时我们使用系列a的数据,在后半段使用系列b的数据。 - John
@John,你可以对最后一个值执行ts.asfreq('H', method='ffill')操作。 - behzad.nouri
看起来第一行不起作用?出现了以下错误TypeError: ufunc add不能使用dtype('<M8[ns]')和dtype('O')类型的操作数 - John
@John,你正在使用哪个版本的pandas? - behzad.nouri
版本是pandas==0.14.1。 - John
@John 嗯,那已经是一年前的事了,可能就是因为这个原因。 - behzad.nouri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接