【发布时间】:2015-07-17 08:17:52
【问题描述】:
我有一个 DataFrame,其中索引是 date_time 并且列中的数据随着时间的推移交错。也许最好的解释是展示这个 DF:
>>> c
A B C D
2015-01-01 0.09607408 NaN NaN NaN
2015-01-02 NaN 0.03582221 NaN NaN
2015-01-03 0.2750026 NaN NaN NaN
2015-01-04 NaN 0.892619 NaN NaN
2015-01-05 0.8574456 NaN NaN NaN
2015-01-06 NaN 0.08720886 NaN NaN
2015-01-07 0.7091732 NaN NaN NaN
2015-01-08 NaN 0.09354087 NaN NaN
2015-01-09 0.60924 NaN NaN NaN
2015-01-10 NaN 0.1966458 NaN NaN
2015-01-11 NaN NaN 0.5135616 NaN
2015-01-12 NaN NaN NaN 0.3015004
2015-01-13 NaN NaN 0.5717249 NaN
2015-01-14 NaN NaN NaN 0.5416951
2015-01-15 NaN NaN 0.1031428 NaN
2015-01-16 NaN NaN NaN 0.2944353
2015-01-17 NaN NaN 0.642031 NaN
2015-01-18 NaN NaN NaN 0.2546383
2015-01-19 NaN NaN 0.6536632 NaN
2015-01-20 NaN NaN NaN 0.9877289
2015-01-21 NaN NaN NaN NaN
现在,由于 A 列和 B 列在一段时间内交错存在且有大量重叠,因此出于分析目的,我会将它们视为可比较的。
同样,C 和 D 数据都发生在彼此基本重叠的时间段内,但与 A/B 时间段的重叠为零。
我试图想出一种巧妙的方法来将 A/B 和 C/D 识别为组合在一起的对。我可以设想用 c.A.first_valid_index() 等来做这件事……如果我这样做的话,这一切都是非常代数的。我想知道是否有一种巧妙的方法可以使用时间序列工具中的一些内置“重叠”功能来做到这一点。我找不到任何这样的东西 - 但希望它存在。 TIA
制作上述人为示例 DF 的代码是:
t = pd.date_range('20150101',periods=21)
ti = t.to_datetime()
c = pd.DataFrame(index = ti, columns=['A','B','C','D'])
c.A[0:10:2] = np.random.rand(5)
c.B[1:11:2] = np.random.rand(5)
c.C[10:20:2] = np.random.rand(5)
c.D[11:21:2] = np.random.rand(5)
【问题讨论】:
标签: python pandas time-series