Pandas数据库中的最大值,以返回另一个数据帧中的相应值

时间:2016-05-05 12:00:47

标签: python pandas dataframe max

我有2个pandas数据帧具有相同的行和列,但值不同,我试图使用一个数据帧的每一行的最大值,并从另一个数据帧中的相应位置返回值。

例如:

A = DataFrame(np.arange(9).reshape((3, 3)), index=['d1', 'd2', 'd3'], columns=['s1', 's2', 's3'])

B = DataFrame(np.random.randn(3, 3), index=['d1', 'd2', 'd3'], columns=['s1', 's2', 's3'])

给出类似的东西:

     s1   s2   s3               s1      s2     s3 
d1    0    1    2       d1   -0.02    0.01   0.05
d2    3    4    5       d2    0.01   -0.03  -0.03 
d3    6    7    8       d3    0.04   -0.06   0.02

我可以用'B.max(axis = 1)'得到B的最大值,但我想从A中返回相应的值。我正在寻找类似的东西:

d1   2
d2   3
d3   6

1 个答案:

答案 0 :(得分:0)

好的,您可以使用eqmax值进行比较,并对df A使用此布尔值掩码:

In [265]:
A = pd.DataFrame(np.arange(9).reshape((3, 3)), index=['d1', 'd2', 'd3'], columns=['s1', 's2', 's3'])
​
B = pd.DataFrame(np.random.randn(3, 3), index=['d1', 'd2', 'd3'], columns=['s1', 's2', 's3'])

In [271]:
A

Out[271]:
    s1  s2  s3
d1   0   1   2
d2   3   4   5
d3   6   7   8

In [272]:
B

Out[272]:
          s1        s2        s3
d1 -0.171054 -0.608554  0.168851
d2 -0.514654 -2.281136  1.706951
d3 -1.193330  0.238856  0.770068

In [277]:
A[B.eq(B.max(axis=1), axis=0)]

Out[277]:
    s1  s2  s3
d1 NaN NaN   2
d2 NaN NaN   5
d3 NaN NaN   8

然后您可以在上面获得行方式最大值:

In [279]:
A[B.eq(B.max(axis=1), axis=0)].max(axis=1)

Out[279]:
d1    2.0
d2    5.0
d3    8.0
dtype: float64
相关问题