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
值,并使用此布尔掩码来比较dfA
:
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,你可以接受我的答案,我的答案左上角将有一个空勾号