2014-04-23 126 views
0

我有一個數據框,我想查看列A中的單元格的值與列B中的最高值在同一行。我該怎麼做?查看一個熊貓細胞,如果一個不同的細胞是X

df = pd.DataFrame(np.random.randn(2, 4), columns=['A', 'B', 'C', 'D']);df 

Out[56]: 
      A   B   C   D 
0 1.884824 1.733768 -1.563408 0.102643 
1 -0.863316 0.188670 1.869908 2.195077 

也就是說,我想從A列返回1.884824因爲1.733768是在B列中的最大值

回答

1

使用LOC和idxmax:

df.loc[df['B'].idxmax(),'A'] 

例子:

In [56]: 
import pandas as pd 
df = pd.DataFrame(np.random.randn(2, 4), columns=['A', 'B', 'C', 'D']) 
df 

Out[56]: 

      A  B   C   D 
0 0.757759 -0.98418 -0.931652 0.858322 
1 -0.886566 0.40201 0.969339 0.042881 

[2 rows x 4 columns] 

In [57]: 
df.loc[df['B'].idxmax(),'A'] 

Out[57]: 

-0.88656646696612762 
+0

我認爲你應該使用'ix'(或簡單的'[]')來代替'iloc',因爲'idxmax'將返回實際的索引,所以'iloc'將會失敗,如果索引不是從0開始的連續整數。 – BrenBarn

+0

@BrenBarn so'df.ix [df ['B']。idxmax()] ['A']'更好?我已經更新了我的答案,我認爲在這種情況下'iloc'和'ix'之間沒有區別,我沒有意識到索引限制 – EdChum

+0

'ix''會給出錯誤的答案,如果它有一個非自然整數指數(如2,4,6,8)。你應該使用''.loc''(並且不要鏈索引!),例如做了''df.loc [df ['B']。idxmax(),'A']'' – Jeff