获取pandas数据框架中每一行最大值(n_large)的列名



我想输出3个列名,每个列名对每个pandas行有3个最大值。

例如:

import pandas as pd
# read data
data = pd.DataFrame({
"carbohydrates": [42, 38, 39],
"Proteins": [50, 40, 45],
"Vegetables": [34, 98, 67],
"Fats and Oil": [76, 45, 90],
"Vitamins": [67, 23, 98],
"Minerals": [65, 23, 99]
df
|    |   carbohydrates |   Proteins |   Vegetables |   Fats and Oil |   Vitamins |   Minerals |
|---:|----------------:|-----------:|-------------:|---------------:|-----------:|-----------:|
|  0 |              42 |         50 |           34 |             76 |         67 |         65 |
|  1 |              38 |         40 |           98 |             45 |         23 |         23 |
|  2 |              39 |         45 |           67 |             90 |         98 |         99 |

But I want to return:
[["Fats and Oil", "Vitamin", "Minerals"], 
["Vegetables", "Fats and Oil", "Proteins"], 
["Minerals", "Vitamins", "Fats and Oil"]]
请原谅我的文字格式。我不清楚怎样才能使它好看。

这里有一种方法可以获得每行的(N)largest:

N = 3
list_out = [data.iloc[row].nlargest(N).to_frame().T.columns.tolist() for row in range(0,len(data))]

#输出:

print(list_out)
[['Fats and Oil', 'Vitamins', 'Minerals'],
['Vegetables', 'Fats and Oil', 'Proteins'],
['Minerals', 'Vitamins', 'Fats and Oil']]

最新更新