有没有办法使用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)我有兴趣知道其他的替代方案。
发布于 2020-01-13 21:43:02
您应该能够使用@调用自定义或预定义的函数。在本例中,您希望调用df.max(),因此尝试使用此X.eval('@df.max()')。
希望这能有所帮助
https://stackoverflow.com/questions/59717369
复制相似问题