我需要在许多列中具有相同值的列名称,我需要在另一列中选择最后一个最大值列名称。 例如
service-a:
build:
context: .
dockerfile: DockerfileA
command: node serviceA.js
environment:
KEY=DockerComposeRun
输出应类似于
KEY A B C D E F
0 1 100 100 100 100 50 50
1 2 200 200 200 50 200 50
请帮助我获得结果。我尝试使用 KEY A B C D E F G
0 1 100 100 100 100 50 50 D
1 2 200 200 200 50 200 50 E
来拉第一个匹配项,并给我第一个列名。
我有一个像df这样的数据帧
.idxmax(axis=1)
我运行查询
SITE Counter KEY Full_name B C D E F
LO ALA LO_ALA ALPHA 100 100 100 50 50
LO BLA LO_BLA BALPA 200 200 50 200 50
LO ALA LO_ALA ALPHA 1000 1000 1000 100 1000
LO BLA LO_BLA BALPA 2000 2000 100 2000 1000
在上面的代码之后,我为每个KEY获取一个值,然后我需要的是与最后一个匹配的列名
接下来我运行df['G'] = df[["B","C","D","E","F"]].values.max(1)
df = df.sort_values(['MAX_LIMIT'], ascending=[0])
df = df.drop_duplicates(['KEY'], keep='first')
我需要输出为
df['H'] =df[["B","C","D","E","F"]].idxmax(axis =1)
但是我要得到的输出是
SITE Counter KEY Full_name G H
LO ALA LO_ALA ALPHA 1000 F
LO BLA LO_BLA BALPA 2000 E
答案 0 :(得分:2)
反转列并找到idxmax
:
df.set_index('KEY', inplace=True)
df[df.columns[::-1]].idxmax(axis=1)
KEY
1 D
2 E
dtype: object
编辑:更改查询,例如:
df['G'] = df[["B","C","D","E","F"]].values.max(1)
df = df.drop_duplicates(['KEY'], keep='last')
df['H'] = df[df.columns[4:-1][::-1]].idxmax(axis=1)
print(df)
SITE Counter KEY Full_name B C D E F G H
2 LO ALA LO_ALA ALPHA 1000 1000 1000 100 1000 1000 F
3 LO BLA LO_BLA BALPA 2000 2000 100 2000 1000 2000 E