Python 如何通过比较数据中的多个列来查找具有最大值的列名
我需要在许多列中有相同值的列名,我需要在另一列中选择最后一个最大值列名。 比如说Python 如何通过比较数据中的多个列来查找具有最大值的列名,python,pandas,Python,Pandas,我需要在许多列中有相同值的列名,我需要在另一列中选择最后一个最大值列名。 比如说 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
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
请帮我得到结果。我已经尝试使用.idxmaxaxis=1,它拉取第一个引用,并给我第一个列名
我有一个像df这样的数据帧
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
我运行查询
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]]
我需要输出为
SITE Counter KEY Full_name G H
LO ALA LO_ALA ALPHA 1000 F
LO BLA LO_BLA BALPA 2000 E
但我得到的结果是
SITE Counter KEY Full_name G H
LO ALA LO_ALA ALPHA 1000 B
LO BLA LO_BLA BALPA 2000 B
反转列并查找idxmax: 编辑:更改查询,如下所示:
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
是的,很好的一个..+1:我试过了,因为无法将字符串转换为浮点:mdbg这里是代码,df['MAX\u LIMIT\u BUCKET']=df2[[输入CCY-呼叫桶、输入CCY-TDY桶、输入CCY-汤姆桶、输入CCY-TDY桶、输入CCY-汤姆桶、输入CCY-SPT桶、输入CCY-SPT-1M桶、输入CCY-1-3M桶、输入CCY-3-6M桶、输入CCY-6-1Y桶、输入CCY-1-3Y桶、输入CCY-3-5Y桶、输入CCY-5-7Y桶,输入CCY-7-10Y铲斗,输入CCY-10-15Y铲斗,输入CCY-15Y+铲斗]].idxmaxaxis=1@Karthike您无法将字符串转换为浮点。它对您有效吗?@sandeep:不,它对我无效,我得到了错误,上面是为获取所需结果而编写的实际代码,但我得到的第一个匹配项不是我需要的。
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