首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法用pandas Dataframe.eval代替Dataframe.max来获取max?

有没有办法用pandas Dataframe.eval代替Dataframe.max来获取max?
EN

Stack Overflow用户
提问于 2020-01-13 21:13:07
回答 1查看 260关注 0票数 2

有没有办法使用eval获得每行的最大值?

如果能写出这样的东西,那将是非常甜蜜的事情:

代码语言:javascript
复制
X = pd.DataFrame({'A':[1,2,3,4]})
X.eval("""B = 2* A
          C = A +B
          D = max(A, B)
          E = 2 * D
          """, inplace = True)

而不是:

代码语言:javascript
复制
X = pd.DataFrame({'A':[1,2,3,4]})
X.eval("""B = 2* A
          C = A +B
          """, inplace = True)

X['D'] = X.loc[:,['A', 'B']].max(axis=1)

X.eval('E = 2 * D', inplace=True)

编辑:根据@mephisto的建议,类似这样的东西效果很好:

代码语言:javascript
复制
def rowmax(A,B):
   return pd.concat([A,B], axis=1).max(axis=1)

X = pd.DataFrame({'A':[0, 1,2,3,4]})
X.eval("""B = A % 2 +1
          D = @rowmax(A, B)
       """, inplace = True)

我有兴趣知道其他的替代方案。

EN

回答 1

Stack Overflow用户

发布于 2020-01-13 21:43:02

您应该能够使用@调用自定义或预定义的函数。在本例中,您希望调用df.max(),因此尝试使用此X.eval('@df.max()')

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档