使用 Pandas DataFrame.eval 函数就地更改行的子集

tec*_*ife 6 python python-3.x pandas

我知道这在 Pandas 中有效(df 是一个数据框,op 是一个列,mult 是一个浮点变量):

df.eval("op = op * @mult", inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是是否可以在行的子集(就地)上执行此操作?这给了我一个错误(ex_date 是时间戳类型的局部变量,而 df 的索引是时间戳):

df.eval("df.loc[df.index < @ex_date, op] = op * @mult", inplace=True)
Run Code Online (Sandbox Code Playgroud)

错误是:语法错误: 赋值的左侧必须是单个名称

Ste*_*uch 5

目前无法就地进行条件评估。对此有一个突出的功能要求。建议的语法将使您的示例看起来像:

df.eval("op = op * @mult if index < @ex_date else op", inplace=True)
Run Code Online (Sandbox Code Playgroud)

来源