鉴于以下DataFrames,我想添加系列' bar'从df_other2
到df2
,以便df2
(我理解为间隔)"匹配" df_other2的日期时间索引(不是间隔)(也称为"句点",但实际上是日期时间)。匹配条件应该是df_other2.period
在df2
期间(即日期在区间内)。
我希望将目标索引定义为PeriodIndex
,将源索引定义为DatetimeIndex
足以进行匹配,但似乎并非如此。我有什么替代方法可以让它发挥作用?
>>> df = pd.DataFrame({'period': PeriodIndex(['2012-01', '2012-02', '2012-03'], dtype='int64', freq='M'), 'foo': [1, 2, 3]})
>>> df2 = df.set_index('period')
>>> df2
foo x
period
2012-01 1 NaN
2012-02 2 NaN
2012-03 3 NaN
>>> df_other = pd.DataFrame({'period': [datetime.datetime(2012, 1, 1), datetime.datetime(2012, 2, 3), datetime.datetime(2012, 3, 10)], 'bar': ['a', 'b', 'c']})
>>> df_other2 = df_other.set_index('period')
>>> df_other2
bar
period
2012-01-01 a
2012-02-03 b
2012-01-10 c
>>> df2['x'] = df_other['bar']
>>> df2
foo x
period
2012-01 1 NaN # expected x='a' as '2012-1-1' is part of this period
2012-02 2 NaN # expected x='b'
2012-03 3 NaN # expected x='c'
答案 0 :(得分:0)
我决定将所有df_other2.period
与df2.period
对齐(并使它们DatetimeIndex
)并照常合并。
我将在未来的版本中等待更好的支持:
对于常规时间跨度,pandas使用Period对象作为标量值 和PeriodIndex用于跨度序列。更好地支持不规则 具有任意起点和终点的间隔即将到来 未来版本。
http://pandas.pydata.org/pandas-docs/stable/timeseries.html#time-stamps-vs-time-spans