gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:52:21 25 4
gpt4 key购买 nike

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

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

数据框

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])
df = pd.read_csv ('Allgroups.csv')

df = df.set_index('Ele_Num')
a = int(input("Enter total number of groups: "))

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 = ['Ele_Num','Column','Values']

print (df1)

df1.to_csv('Group_Output.csv', encoding='utf-8', index=True)

for i in range (1,a+1):

print (df1.loc[i])

预期结果:

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
   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

最佳答案

如果只有 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])

关于python - 如何在Python中从多列中的行组中找到2个最大值,并在输出中显示其行索引和列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com