作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是Python新手。我想找到重复行元素(即 5 到 4100)的所有列中的最大值,并在输出中显示其行和列索引标签。最大值应该是绝对的。 (无论+或-号)行索引组将继续重复“n”次。对于行索引的每个“第 n”组,我想要每个组的最大值及其索引位置。例如:如果组行索引重复“n”次,则输出应显示“n”个值。
在我的数据集中,行索引 5,10,12,101,4100 以相同的顺序重复两次。所以我的输出必须显示 2 个最大值(每组 1 个)。如果我的行索引(5,10,12,101,4100)以相同的顺序重复“n”次,则输出必须显示“n”个值。(每组行1个值)
df = pd.DataFrame({'E_at_0': [43, -53, 45, -17, 45, 19, 11, 32, 36, 32],
'E_at_10': [-47, 47, 46, -18, 53, 16, 12, 34, -71, -34],
'E_at_20': [56, 43, 41, 29, 36, 14, 13, -37, 43, 38],
'E_at_30': [-46, 16, -40, 31, 42, 15, 63, -39, 52, 39]}, index=[5, 10, 12, 101, 4100, 5, 10, 12, 101, 4100])
df.index.name='Ele_Num'
df = pd.read_csv ('trial.csv')
df = df.set_index('Ele_Num')
s = df.abs().stack()
mask = s == s.max()
df1 = df.stack()[mask].reset_index()
df1.columns = ['Element No','Column','Values']
print (df1)
df1.to_csv('trial_output.csv', encoding='utf-8', index=True)
预期结果:
对于第一组行(即索引 5,10,12,101,4100)
Ele_Num E_at_20
5 56
对于第二组行索引值(即再次对于索引 5,10,12,101,4100)
Ele_Num E_at_10
101 -71
实际结果:
Ele_Num E_at_30
101 -71
最佳答案
您可以创建组,然后调用每个组的函数 - 最后通过带有 loc
的索引在输出 DataFrame 中进行选择:
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
关于python - 如何在Python中找到多列中重复行的最大绝对值并显示其行和列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130359/
我是一名优秀的程序员,十分优秀!