[英]pandas: get column and row name where row has the highest value for every row
我有以下 dataframe:
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 是,
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()
您可以將“已發送”設置為索引並使用列表理解:
df = data.set_index('sent')
output = [{'sent': k, v: df.loc[k,v]} for k,v in df.idxmax(1).iteritems()]
output:
[{'sent': 'one', 'val_3': 9},
{'sent': 'two', 'val_2': 7},
{'sent': 'three', 'val_1': 8}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.