我知道这在pandas中有效(df是数据帧,op是列,mult是浮点变量):
df.eval("op = op * @mult", inplace=True)
但是有可能在行的子集上(就地)吗?这给了我一个错误(ex_date是timestamp类型的局部变量,df的索引是时间戳):
df.eval("df.loc[df.index < @ex_date, op] = op * @mult", inplace=True)
错误是: SyntaxError:赋值的左侧必须是单个名称
答案 0 :(得分:3)
目前无法进行条件评估。有一个出色的功能要求。建议的语法将使您的示例看起来像:
df.eval("op = op * @mult if index < @ex_date else op", inplace=True)
(SOURCE)