python - 在相同形状的两个数据框之间查找更大的行
问题描述
我有两个相同形状的数据框,我试图找到 df A 中的所有行,其中每个值都大于 df B 中的相应行。
小例子:
df_A = pd.DataFrame({'one':[20,7,2],'two':[11,9,1]})
df_B = pd.DataFrame({'one':[1,8,12],'two':[10,5,3]})
我只想返回第 0 行。
one two
0 20 11
我意识到这df_A > df_B
让我大部分时间都受益,但我只是不知道如何只返回所有内容所在的那些行True
。
(我尝试将两者合并,但这似乎并没有让它变得更简单。)
解决方案
IUIC,你可以使用all
In [633]: m = (df_A > df_B).all(1)
In [634]: m
Out[634]:
0 True
1 False
2 False
dtype: bool
In [635]: df_A[m]
Out[635]:
one two
0 20 11
In [636]: df_B[m]
Out[636]:
one two
0 1 10
In [637]: pd.concat([df_A[m], df_B[m]])
Out[637]:
one two
0 20 11
0 1 10
或者,如果您只需要行索引。
In [642]: m.index[m]
Out[642]: Int64Index([0], dtype='int64')