2017-09-04 77 views
0

的返回最大列比方说,我有列A,B,C一个数据帧,d的Python:从一组列

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',表示对于该特定行,这三列中的一列包含最大值。

有谁知道如何做到这一点?

回答

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 
2

试试这个IDMAX与axis=1会帮助你找到columnns中的最大值:

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