2014-04-23 71 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