pandas - 有没有办法使用 pandas Dataframe.eval 而不是 Dataframe.max 来获得最大值?
问题描述
有没有办法使用 获得每行的最大值eval
?
能够写出类似这样的东西会很甜蜜:
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)
代替:
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 所建议的,与此类似的东西效果很好:
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)
我有兴趣了解其他替代方案。
解决方案
您应该能够使用 调用自定义或预定义函数@
。在你的情况下你想打电话df.max()
,所以试试这个X.eval('@df.max()')
。
希望这可以帮助
推荐阅读
- maven - 防止 Maven 在不需要时连接到外部存储库的策略
- javascript - 在上下文中传递 ref
- debugging - 'NODE_OPTIONS' 未被识别为内部或外部命令 - 仍然是一个问题
- jquery - 无法使用 .then() 语句中的数据更新元素 .attr()
- c# - 为什么这个翻转精灵功能不起作用?
- ruby-on-rails - 如何在错误轨道“警告:299 Elasticsearch 内置安全功能未启用。如果没有身份验证,您的集群可以...”中解决此问题
- vue.js - 当我运行 yarn serve 时,为什么我的 Vue 应用程序无法在依赖项的缓存中打开 scss 文件?
- amazon-web-services - AWS Neptune 读取器终端节点无法工作
- kubernetes - 如何在同一个 kubernetes pod 中的容器之间共享文件
- azureservicebus - 如何在不使用 Send 和 RequestAddress 的情况下,根据消息内容将两条相同类型的消息发布到不同的 worker 实例?