找到pandas d中最大值旁边的列的值

2024-04-26 23:53:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正为一个问题而挣扎。我有一个熊猫df,包含不同玩家的X,Y坐标。我可以用.max(axis = 1)得到行的最大X坐标值。在

我希望实现的是创建一个新列,其中包含最大值旁边的值。也就是说,如何找到max X坐标列的相邻值。所以对于任何给定的行,它都是紧挨着最大X坐标的Y坐标。在

注意:不会有重复的最大值。在

示例见下文。在

df
Player 1_X  Player 1_Y  Player 2_X  Player 2_Y  Player 3_X  Player 3_Y
6           7           5           8           **9**       3
5           7           6           7           **8**       2
4           6           **7**       7             6         1 

预期测向:

^{pr2}$

我尝试过if语句和where函数,但不知道是从哪里开始的,因为我是python新手。在


Tags: 函数示例dfif玩家语句wheremax
1条回答
网友
1楼 · 发布于 2024-04-26 23:53:45

这里有一种方法,虽然它可能不是最有效的:

import pandas as pd

cols = ['Player '+str(x)+'_'+y for x in range(1, 4) for y in ('X', 'Y')]
x_cols = ['Player '+str(x)+'_X' for x in range(1, 4)]

df = pd.DataFrame([[6, 7, 5, 8, 9, 3],
                   [5, 7, 6, 7, 8, 2],
                   [4, 6, 7, 7, 6, 1]],
                  columns=cols)

df['usecol'] = df[x_cols].idxmax(axis=1).apply(lambda x: cols[cols.index(x)+1])
df['New Column'] = df.apply(lambda x: x[x['usecol']], axis=1)
df = df.drop('usecol', 1)

相关问题 更多 >