执行条件

时间:2019-05-21 04:15:50

标签: python python-3.x pandas lambda

有一个函数可以计算Y列的移动平均值:

df['Y1'] = df.apply(
    lambda x: df.loc[
        (
            (df.X2 < x.X2)
            & (df.X2 >= (x.X2 + pd.DateOffset(days=-4)))
            & (df.X3 == x.X3)
            & (df.X4 == x.X4)
        ),
        "Y",
    ].mean(),
    axis=1,
)

如何输入条件X5 = 1,在该条件下将执行此功能。 如果X5 = 1,则我们计算平均值,如果不是,则Y1为空。

我将澄清,讨论当前行中X5的值。

1 个答案:

答案 0 :(得分:0)

您可以将其包装在if-else中:

lambda x: np.nan if X5 != 1 else df.loc[
    (
        (df.X2 < x.X2)
        & (df.X2 >= (x.X2 + pd.DateOffset(days=-4)))
        & (df.X3 == x.X3)
        & (df.X4 == x.X4)
    ),
    "Y",
].mean(),