如何在Python中找到多列中重复行的最大绝对值,并显示其行和列索引

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

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

在我的数据集中,行索引5,10,121014100以相同的顺序重复两次。因此,我的输出必须显示2个最大值(每组1个)。 如果我的行索引(5,10,121014100)以相同顺序重复“n”次,则输出必须显示“n”值。(每组行1个值)

预期成果:

第一组行(即索引5,10,121014100)

用于第二组行索引值(即同样用于索引5,10,121014100)

实际结果:

Ele_Num   E_at_30
  101       -71

您可以创建组,然后使用
loc
按索引在输出数据帧中按组调用函数-last select:

def f(x):
    x1 = x.abs().stack()
    x2 = x.stack()
    x = x2.iloc[np.argsort(-x1)].head(2)
    return x

groups = (df.index == 5).cumsum()
df1 = df.groupby(groups).apply(f).reset_index(level=[1,2])
df1.columns = ['Element No','Column','Values']
print (df1)
   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

print (df1.loc[1])
   Element No   Column  Values
1           5  E_at_20      56
1          10   E_at_0     -53

print (df1.loc[2])
   Element No   Column  Values
2         101  E_at_10     -71
2          10  E_at_30      63

请重新格式化。你说的
请查看图像
,因为没有url。完成。请检查。您的代码提供了确切的所需输出。对于“n”个组,它正好为每组行索引提供“n”个最大值。谢谢大家的支持。
Ele_Num   E_at_20
  5          56
Ele_Num   E_at_10
  101       -71
Ele_Num   E_at_30
  101       -71
def f(x):
    x1 = x.abs().stack()
    x2 = x.stack()
    x = x2.iloc[np.argsort(-x1)].head(2)
    return x

groups = (df.index == 5).cumsum()
df1 = df.groupby(groups).apply(f).reset_index(level=[1,2])
df1.columns = ['Element No','Column','Values']
print (df1)
   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

print (df1.loc[1])
   Element No   Column  Values
1           5  E_at_20      56
1          10   E_at_0     -53

print (df1.loc[2])
   Element No   Column  Values
2         101  E_at_10     -71
2          10  E_at_30      63