选择 pandas 数据框中具有最小值的列

D. *_*aan 3 python dataframe python-3.x pandas

我有一个具有以下结构的 pandas 数据框:

df_测试

V       |  A    | B   |  C      |  D
-10     |  nan  | nan |  nan    |  nan  
-9.9    |  10   | 1   |  -2200  |  100
-9.8    |  11   | 2   |  -2211  |  1
Run Code Online (Sandbox Code Playgroud)

我想添加一个新列,minimum_difference其中包含该特定行的绝对值最小的列名称(忽略V),如下所示:

V       |  A    | B   |  C      |  D    | minimum_difference
-10     |  nan  | nan |  nan    |  nan  | nan
-9.9    |  10   | 1   |  -2200  |  100  | B
-9.8    |  11   | 2   |  -2211  |  1    | D
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以使用df.drop跳过V列,并将df.abs数据帧的值转换为其绝对等效值,并使用df.idxminwithaxis=1查找最小(绝对)值的索引(这将是列名称):

df_test['minimum_difference'] = df_test.drop('V', axis=1).abs().idxmin(axis=1)
Run Code Online (Sandbox Code Playgroud)

输出:

>>> df
      V     A    B       C      D minimum_difference
0 -10.0   NaN  NaN     NaN    NaN                NaN
1  -9.9  10.0  1.0 -2200.0  100.0                  B
2  -9.8  11.0  2.0 -2211.0    1.0                  D
Run Code Online (Sandbox Code Playgroud)

  • 啊,我现在看到了。不用担心。无论如何,我想给出一个更通用的解决方案。 (2认同)