繁体   English   中英

在pandas DataFrame中选择最接近零的行中的值

[英]Selecting the value in a row closest to zero in a pandas DataFrame

我们有一个包含两列的pandas DataFrame

pd.DataFrame(pd.np.arange(12).reshape(6,2), columns=list('ab')) % 3 - 1.2

     a    b
0 -1.2 -0.2
1  0.8 -1.2
2 -0.2  0.8
3 -1.2 -0.2
4  0.8 -1.2
5 -0.2  0.8

获得最接近零的值的最佳方法是什么? 上述的预期产出将是

     x
0 -0.2
1  0.8 
2 -0.2  
3 -0.2
4  0.8 
5 -0.2 

我尝试使用df.idxmin(axis=1) ,然后lookup ,但我打赌有一种更简单的方法吗?

只需使用“a”或“b”中的值进行选择

df['a'].where(df['a'].abs() < df['b'].abs(), df['b'])

我原来的答案

您可以添加列名称最接近零的列,然后使用它来选择最接近的值。

(df.assign(closest=df.apply(lambda x: x.abs().argmin(), axis='columns'))
 .apply(lambda x: x[x['closest']], axis='columns'))

它仍然看起来比它应该更麻烦?

一种选择:

df = pd.DataFrame(pd.np.arange(12).reshape(6,2), columns=list('ab')) % 3 - 1.2
closest_to_zero = df.abs().idxmin(axis=1).pipe(lambda x: x[x.notnull()])
pd.Series(df.lookup(closest_to_zero.index, closest_to_zero), index=closest_to_zero.index).reindex(df.index)

以下对我有用,给你最接近零的值:

   df.abs().min()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM