两个 Pandas 系列替换值使用中间值

Two Pandas Series replacement values using intermediate one

我是 Pandas 的新手,正在尝试使用这样的三个系列...

第一个 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

第二个小号:

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

我想做的是: 如果在 S 中为 True,则将 X 中的值替换为 Average 中相应索引的值。 最好和更有效的方法是什么?

您可以使用 where 传入 Series 来测试:

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