我试图从多列中找到对应于绝对最小值的实际值。例如:
df = pd.DataFrame({'A': [10, -5, -20, 50], 'B': [-5, 10, 30, 300], 'C': [15, 30, 15, 10]})
此输出应该是另一个具有 -5、-5、15 和 10 值的列。
我尝试了 df['D'] = df[['A', 'B', 'C']].abs().min(axis=1)
,但它返回绝对值的最小值,因此丢失了符号。
答案 0 :(得分:2)
试试 idxmin
df['D'] = df.values[df.index,df.columns.get_indexer(df[['A', 'B', 'C']].abs().idxmin(1))]
df
Out[176]:
A B C D
0 10 -5 15 -5
1 -5 10 30 -5
2 -20 30 15 15
3 50 300 10 10