2017-06-20 189 views
1

我想提取行中的最大值并从熊猫数据框中提供列标签。例如,大熊猫的列标签

 A B C D 
index 
x  0 1 2 3 
y  3 2 1 0 

我期待下面的输出,

 A B C D Maxv Con 
index 
x  0 1 2 3 3 D 
y  3 2 1 0 3 A 

我尝试以下,

df['Maxv'] = df.apply(max,axis=1) 
df['Con'] = df.idxmax(axis='rows') 

它仅返回最大列和 '男' 的精读列。这里有什么错误?

在此先感谢。

AP

回答

2

需要axis='columns'axis=1DataFrame.idxmax

df['Con'] = df.idxmax(axis='columns') 
print (df) 
     A B C D Maxv Con 
index      
x  0 1 2 3  3 D 
y  3 2 1 0  3 A 

或者:

df['Con'] = df.idxmax(axis=1) 
print (df) 
     A B C D Maxv Con 
index      
x  0 1 2 3  3 D 
y  3 2 1 0  3 A 

你得到NaN S,因为数据不对齐index

print (df.idxmax(axis='rows')) 
A y 
B y 
C x 
D x 
dtype: object