Python 通过正向填充稀疏序列来创建新的熊猫系列

Python 通过正向填充稀疏序列来创建新的熊猫系列,python,pandas,Python,Pandas,我有一个稀疏的熊猫系列。为了便于说明,让我们创建一个模拟系列ts2 import pandas as pd idx2 = pd.date_range('2016-01-29', '2016-02-27', freq='W') ts2 = pd.Series(data=[11, 9, 13, 4], index=idx2) 看起来像 2016-01-31 11 2016-02-07 9 2016-02-14 13 2016-02-21 4 我想使用ts2创建(通过正

我有一个稀疏的熊猫系列。为了便于说明,让我们创建一个模拟系列ts2

import pandas as pd
idx2 = pd.date_range('2016-01-29', '2016-02-27', freq='W')
ts2 = pd.Series(data=[11, 9, 13, 4], index=idx2)
看起来像

2016-01-31    11
2016-02-07     9
2016-02-14    13
2016-02-21     4
我想使用ts2创建(通过正向填充)一个具有不同时间范围的新系列,例如

idx1 = pd.date_range('2016-02-01', '2016-02-28', freq='D')
新的时间序列应该如下所示

2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07    9
2016-02-08    9
...
2016-02-08    4
这样做的好方法是什么?请注意,idx1和idx2的日期不匹配。因此,要在idx1中填充2016-02-01,您必须在ts2中查找2016-01-31值

编辑:我应该提到,idx1可能不是每天都有,但可能是一些日期的集合,如工作日减去挪威的公共假日或其他什么。

EDIT:idx1是否有特殊的缺失日期或假日 将
reindex
method='ffill'
一起使用:

 ts2.reindex(idx1, method='ffill')
输出:

2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
2016-02-22     4
2016-02-23     4
2016-02-24     4
2016-02-25     4
2016-02-26     4
2016-02-27     4
2016-02-28     4
Freq: D, dtype: int64
2016-01-31    11
2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
Freq: D, dtype: int64
或者如果idx1只是一个每日增量。 使用
重采样
ffill

 ts2.resample('D').ffill()
输出:

2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
2016-02-22     4
2016-02-23     4
2016-02-24     4
2016-02-25     4
2016-02-26     4
2016-02-27     4
2016-02-28     4
Freq: D, dtype: int64
2016-01-31    11
2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
Freq: D, dtype: int64
编辑:如果idx1有特殊缺失的天数或假日 将
reindex
method='ffill'
一起使用:

 ts2.reindex(idx1, method='ffill')
输出:

2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
2016-02-22     4
2016-02-23     4
2016-02-24     4
2016-02-25     4
2016-02-26     4
2016-02-27     4
2016-02-28     4
Freq: D, dtype: int64
2016-01-31    11
2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
Freq: D, dtype: int64
或者如果idx1只是一个每日增量。 使用
重采样
ffill

 ts2.resample('D').ffill()
输出:

2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
2016-02-22     4
2016-02-23     4
2016-02-24     4
2016-02-25     4
2016-02-26     4
2016-02-27     4
2016-02-28     4
Freq: D, dtype: int64
2016-01-31    11
2016-02-01    11
2016-02-02    11
2016-02-03    11
2016-02-04    11
2016-02-05    11
2016-02-06    11
2016-02-07     9
2016-02-08     9
2016-02-09     9
2016-02-10     9
2016-02-11     9
2016-02-12     9
2016-02-13     9
2016-02-14    13
2016-02-15    13
2016-02-16    13
2016-02-17    13
2016-02-18    13
2016-02-19    13
2016-02-20    13
2016-02-21     4
Freq: D, dtype: int64

谢谢,但它没有与idx1相同的索引。好的,在上面的例子中,它是每日的,但idx1只能是工作日,公共假日除外。@Spinor8请参阅编辑,如果idx使用方法'ffill'。我认为问题是,
idx1
不包含来自
ts2.index
的min()日期,因此无法向前填充该值。这可能是我理解错了。谢谢,但这和idx1没有相同的索引。好的,在上面的例子中,它是每日的,但idx1只能是工作日,公共假日除外。@Spinor8请参阅编辑,如果idx使用方法'ffill'。我认为问题是,
idx1
不包含来自
ts2.index
的min()日期,因此无法向前填充该值。可能我解释错了。你能编辑idx1以引用ts2索引中的min()值吗?或者有什么东西禁止这样做?通常idx1不是每日的。您可以编辑idx1以引用ts2索引中的min()值吗?还是有什么东西禁止这样做?一般来说,idx1不是每天都有。