如何在Python中从多列中的一组行中找到2个最大值,并在输出时显示其行和列索引

如何在Python中从多列中的一组行中找到2个最大值,并在输出时显示其行和列索引,python,pandas,numpy,dataframe,max,Python,Pandas,Numpy,Dataframe,Max,我是python新手。我想从所有列中找出重复行元素(即5到101)的最大值,并在输出中显示其行和列索引标签。最大值应为绝对值。(不考虑+或-符号)行索引组将继续重复“n”次。对于行索引的每个“n”组,我需要每个组的“n”最大值及其索引位置 在我的数据集中,行索引5,10,12101以相同的顺序重复3次(对于FX、FY和FZ)。因此,我的输出必须为每组FX、FY、FZ显示两个最大值。如果我的行索引(5,10,12101)以相同顺序重复“n”次,则输出必须显示FX、FY和FZ的“n”最大值 数据帧

我是python新手。我想从所有列中找出重复行元素(即5到101)的最大值,并在输出中显示其行和列索引标签。最大值应为绝对值。(不考虑+或-符号)行索引组将继续重复“n”次。对于行索引的每个“n”组,我需要每个组的“n”最大值及其索引位置

在我的数据集中,行索引5,10,12101以相同的顺序重复3次(对于FX、FY和FZ)。因此,我的输出必须为每组FX、FY、FZ显示两个最大值。如果我的行索引(5,10,12101)以相同顺序重复“n”次,则输出必须显示FX、FY和FZ的“n”最大值

数据帧

df=pd.DataFrame({'E_at_0': [43, -53, 45, -17, 19, 11, 32, 36, 19, 11, 32, 36], 
              'E_at_10': [-47, 47, 46, -18, 16, 12, 34, -52, 16, 12, 34, -71], 
              'E_at_20': [56, 43, -41, 29, 14, 13, 33, 43, 14, 13, 33, 43], 
              'E_at_30': [-46, 16, -40, -11, 15, 33, -39, -22, 15, 63, -39, -22]}, index=[5, 10, 12, 101, 5, 10, 12, 101, 5, 10, 12, 101])
预期成果:

2 Largest Values from FX:
   Element No   Column  Values
1           5  E_at_20      56
1          10  E_at_0      -53

2 Largest Values from FY:
    Element No   Column  Values
2          101  E_at_10     -52
2          101  E_at_20      43

2 Largest Values from FZ:
   Element No   Column  Values
3         101   E_at_10      71
3          10   E_at_30     -63


实际结果:

   Element No   Column  Values
1           5  E_at_20      56
1          10   E_at_0     -53
2         101  E_at_10     -71
2          10  E_at_30      63

如果只有
3个
或少数组,我建议创建映射词典:

d = {1:'FX', 2:'FY', 3:'FZ'}

for i in range (1,a+1):
    print (d[i]) 
    print (f'{a} Largest Values from {d[i]}')
    print (df1.loc[i])

谢谢另外,如果你能帮我消除重复的。例如,对于上述数据集,第2组和第3组,
元素编号101 E_在第10处
重复。在两个组中,若元素编号相同,则输出必须仅显示具有最大值的组的一个实例。第三组。价值观-71@Akshay可以创建新问题吗?好的。贴了一张新的
   Element No   Column  Values
1           5  E_at_20      56
1          10   E_at_0     -53

   Element No   Column  Values
2         101  E_at_10     -71
2          10  E_at_30      63
d = {1:'FX', 2:'FY', 3:'FZ'}

for i in range (1,a+1):
    print (d[i]) 
    print (f'{a} Largest Values from {d[i]}')
    print (df1.loc[i])