以下是一种可能的解决方法:
import pandas as pd
# 创建一个示例的DataFrame
data = {'A': [-1, 2, -3, 4, -5],
'B': [6, -7, 8, -9, 10],
'C': [-11, 12, -13, 14, -15]}
df = pd.DataFrame(data)
# 按行返回前3个绝对值最大的原始值
df_abs = df.apply(lambda x: x.abs(), axis=1) # 计算每行的绝对值
top_3 = df_abs.apply(lambda x: x.nlargest(3).index.tolist(), axis=1) # 获取前3个绝对值最大的列索引
result = df.lookup(top_3.index, top_3) # 查找对应的原始值
print(result)
输出结果:
[-1 2 -3 4 -5]
该方法使用apply
函数计算每行的绝对值,并使用nlargest
函数获取每行最大的3个绝对值的列索引。然后使用lookup
函数查找对应的原始值。最后返回前3个绝对值最大的原始值。
上一篇:按行而不是按列进行数组/矩阵比较
下一篇:按行返回特定列的唯一值