Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据库中的最大值,以返回另一个数据帧中的相应值_Python_Pandas_Dataframe_Max - Fatal编程技术网

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

Python 数据库中的最大值,以返回另一个数据帧中的相应值,python,pandas,dataframe,max,Python,Pandas,Dataframe,Max,我有两个数据帧,它们具有相同的行和列,但值不同,我尝试使用一个数据帧的每一行的最大值,并从另一个数据帧中的相应位置返回值 例如: 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', 's

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

例如:

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
d1   2
d2   3
d3   6
我可以使用“B.max(axis=1)”获得B的最大值,但我想从A返回相应的值。我正在寻找类似以下内容:

     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
d1   2
d2   3
d3   6
确定您可以使用来比较
max
值,并使用此布尔掩码来比较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

我不确定这就是我想要的。也许我不清楚。我想使用在B中找到的每一行的最大数字,并从A返回数据帧中相同对应位置的原始数字。因此,如果(d1,s3)是B中d1行的最大值,我希望返回A中的(d1,s3),2。因此您希望
A[B==B.max(axis=1)]
?感谢您的回复。这听起来不错,但我有点不舒服。我遗漏了什么吗?它屏蔽了df,你可以再次在上面调用
max
,我将更新COOL,你可以接受我的答案,我的答案左上角将有一个空勾号