pandas:获取每一行中行具有最高值的列和行名称

pandas: get column and row name where row has the highest value for every row

我有以下数据框:

import pandas as pd
data = pd.DataFrame({'sent':['one','two','three'], 'val_1':[2,4,8], 'val_2': [4,7,1], 'val_3':[9,3,6]})

我想获取具有最高值的行以及它们出现的列名和发送的数字作为字典列表,例如我想要的输出是,

output = [{'sent': 'one', 'val_3': 9}, {'sent': 'two', 'val_2': 7}, {'sent': 'three', 'val_1': 8}]

我尝试了以下方法:

dict = data.to_dict('records')
for i in dict:
   for k,v in i.items():
          if not isinstance(v, str):
                 print(i, key =i.get) # sends an error 

我也尝试过过滤最大值,但无法获取列名以继续。

data[['val_1','val_2','val_3']].max()

您可以将 'sent' 设置为索引并使用列表理解:

df = data.set_index('sent')
output = [{'sent': k, v: df.loc[k,v]} for k,v in df.idxmax(1).iteritems()]

输出:

[{'sent': 'one', 'val_3': 9},
 {'sent': 'two', 'val_2': 7},
 {'sent': 'three', 'val_1': 8}]