【问题标题】:name of column, that contains the max value列名,包含最大值
【发布时间】:2015-12-10 19:41:46
【问题描述】:

我的数据框看起来像:

Alice          Eleonora    Mike     Helen
   2               7          8       6                 
   11              5          9       4
   6              15         12       3
   5               3          7       8

我想为每一行创建一个新列,该列包含给定行的最大值的列的名称

Alice          Eleonora    Mike     Helen    _Max
   2               7          8       6        Mike         
   11              5          9       4        Alice
   6              15         12       3        Eleonora
   5               3          7       8        Helen

我知道如何获得最大值:

df['_Max']=df[['Alice', 'Eleonora', 'Mike', 'Helen']].max(axis=1)

但是如何获取具有最大值的列的名称并将其写入_Max 而不是值本身?

【问题讨论】:

  • 我对你的要求有点困惑。您能否发布所需的确切输出?
  • @JoeR 我已经发布了所需的确切输出,请参阅 EdChum 的答案,它解释了如何获得它!

标签: python pandas max dataframe


【解决方案1】:

您可以使用 applylambda 来返回列的名称,这里我们将值逐行与最大值进行比较,这会产生一个布尔掩码,我们可以使用它来屏蔽列:

In [229]:
df['MAX'] = df.apply( lambda x: df.columns[x == x.max()][0], axis=1)
df

Out[229]:
   Alice  Eleonora  Mike  Helen       MAX
0      2         7     8      6      Mike
1     11         5     9      4     Alice
2      6        15    12      3  Eleonora
3      5         3     7      8     Helen

这是布尔掩码:

In [232]:
df.apply( lambda x: x == x.max(), axis=1)

Out[232]:
   Alice Eleonora   Mike  Helen
0  False    False   True  False
1   True    False  False  False
2  False     True  False  False
3  False    False  False   True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2013-08-09
    • 2022-01-07
    • 1970-01-01
    • 2020-11-04
    • 2014-09-07
    相关资源
    最近更新 更多