![](/img/trans.png)
[英]Selecting the value in a row closest to zero in a pandas DataFrame with multiple columns
[英]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.