Python 使用中间值的两个系列替换值

Python 使用中间值的两个系列替换值,python,pandas,time-series,series,Python,Pandas,Time Series,Series,我是新来的熊猫,尝试使用三个系列像这样 第一个X: DATE 2015-10-10 00:00:00 0.0 2015-10-10 01:00:00 290.0 2015-10-10 02:00:00 225.0 2015-10-10 03:00:00 4.0 2015-10-10 04:00:00 2.0 Name: X, dtype: bool 第二个S: DATE 2015-10-10 00:00:00 True 2015-10-10 0

我是新来的熊猫,尝试使用三个系列像这样

第一个X:

DATE
2015-10-10 00:00:00      0.0
2015-10-10 01:00:00    290.0
2015-10-10 02:00:00    225.0
2015-10-10 03:00:00      4.0
2015-10-10 04:00:00      2.0
Name: X, dtype: bool
第二个S:

DATE
2015-10-10 00:00:00     True
2015-10-10 01:00:00    False
2015-10-10 02:00:00    False
2015-10-10 03:00:00     True
2015-10-10 04:00:00     True
Name: S, dtype: bool
三分之一平均值:

DATE
2015-10-10 00:00:00      0.000000
2015-10-10 01:00:00    145.000000
2015-10-10 02:00:00    171.666667
2015-10-10 03:00:00    128.750000
2015-10-10 04:00:00    103.000000
Name: average, dtype: bool
我想做的是: 若X中的值在S中为真,则用相应的平均索引值替换X中的值。 这样做的最佳和更有效的方法是什么?

您可以使用传递
系列来测试:

In [231]:
Average.where(S==True, X)

Out[231]:
DATE
2015-10-10 00:00:00      0.00
2015-10-10 01:00:00    290.00
2015-10-10 02:00:00    225.00
2015-10-10 03:00:00    128.75
2015-10-10 04:00:00    103.00
Name: val, dtype: float64

我认为
X=Average.where(S==True)
应该work@EdChum它确实有效,但如果在S中为False,它将替换X中的值!查看我的答案,您可以将
X
作为另一个参数传递,当
False