假设我有
DataFrame
df1
和 df2
:
>>> df1 = pd.DataFrame({'A': [0, 2, 4], 'B': [2, 17, 7], 'C': [4, 9, 11]})
>>> df1
A B C
0 0 2 4
1 2 17 9
2 4 7 11
>>> df2 = pd.DataFrame({'A': [9, 2, 32], 'B': [1, 3, 8], 'C': [6, 2, 41]})
>>> df2
A B C
0 9 1 6
1 2 3 2
2 32 8 41
我想要的是第三个
DataFrame
,其行数最少(min
是根据列B
计算的),即:
>>> df3
A B C
0 9 1 6
1 2 3 2
2 4 7 11
我真的不想通过迭代所有行并逐一比较它们来做到这一点,有没有一种更快、更紧凑的方法来做到这一点?
mask
df1
与 df2
当 df2['B'] < df1['B']
:
out = df1.mask(df2['B'].lt(df1['B']), df2)
输出:
A B C
0 9 1 6
1 2 3 2
2 4 7 11