Python 使用中间值的两个系列替换值
我是新来的熊猫,尝试使用三个系列像这样 第一个X: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
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