使用pandas DataFrame.eval函数来更改位置

时间:2017-02-07 00:06:46

标签: python python-3.x pandas

我知道这在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:赋值的左侧必须是单个名称

1 个答案:

答案 0 :(得分:3)

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

df.eval("op = op * @mult if index < @ex_date else op", inplace=True)

SOURCE