Python:从一组列返回最大列

时间:2017-09-04 04:39:42

标签: python function max

假设我有一个包含A,B,C,D

列的数据框
import pandas as pd
import numpy as np
## create dataframe 100 by 4
df = pd.DataFrame(np.random.randn(100,4), columns=list('ABCD'))
df.head(10)

我想创建一个新列“max_bcd”,此列将显示“b”,“c”,“d”,表示对于该特定行,这三列中的一列包含最大值。

有谁知道如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

使用axis=1尝试此idmax将帮助您找到列中的最大值:

>>> df.idxmax(axis=1)
0    B
1    C
2    D
dtype: object

答案 1 :(得分:1)

import pandas as pd
import numpy as np

cols = ['B', 'C', 'D']
## create dataframe 100 by 4
df = pd.DataFrame(np.random.randn(100,4), columns=list('ABCD'))
df.head(10)
df.insert(4, 'max_BCD_name', None)
df.insert(5, 'max_BCD_value', None)
df['max_BCD_name'] = df.apply(lambda x: df[cols].idxmax(axis=1)) # column name
df['max_BCD_value'] = df.apply(lambda x: df[cols].max(axis=1)) # value
print(df)

编辑:刚看到你的要求只有B,C和D.为此添加了代码。

输出:

           A         B         C         D max_BCD_name  max_BCD_value
0  -0.653010 -1.479903  3.415286 -1.246829            C       3.415286
1   0.343084  1.243901  0.502271 -0.467752            B       1.243901
2   0.099207  1.257792 -0.997121 -1.559208            B       1.257792
3  -0.646787  1.053846 -2.663767  1.022687            B       1.053846