【发布时间】:2018-06-23 12:22:24
【问题描述】:
我正在尝试合并两个系列,一个以小时为单位,另一个以分钟为单位(并将索引保持在分钟级别):
Series A:
time
2017-09-01 01:00:00 0.5
2017-09-01 02:00:00 0.4
Freq: H, Name: A, dtype: float64
B 系列在几分钟内:
Series B
time
2017-09-01 00:00:00 NaN
2017-09-01 00:03:00 -0.000350
2017-09-01 00:06:00 0.000401
Name: B, dtype: float64
我想按小时合并这两个系列。所需的合并数据框将是:
time
2017-09-01 00:00:00 NaN 0.5
2017-09-01 00:03:00 -0.000350 0.5
2017-09-01 00:06:00 0.000401 0.5
2017-09-01 01:00:00 0.002301 0.4
2017-09-01 01:03:00 0.005601 0.4
在 SO 上搜索后,我发现一种方法是在 B 系列中创建一个“小时”列,然后使用 A 的索引和 B 的“小时”列将 A 连接到 B:(参考:Merging/combining two dataframes with different frequency time series indexes in Pandas?)
B = B.to_frame()
B['hour'] = B.index.to_period('H')
merged = B.join(A, on = 'hour', how = 'left')
但我收到错误消息:
TypeError: Argument 'values' has incorrect type (expected numpy.ndarray, got Index)
有谁知道如何解决这个问题?或者也许有更好的方式加入这两个系列?非常感谢!
【问题讨论】:
-
你为什么要将系列
A中的小时01与系列B中的小时00匹配? -
因为这些是“自上一行以来的回报”。即 0.5 是 00:00 到 01:00 之间的返回。这可以使用 shift 命令进行调整,所以我的主要问题仍然是频率差异。 :(
-
我已经更新了我的答案 - 请检查
-
谢谢!所以诀窍是重新采样和填充!
标签: python pandas datetime dataframe merge