繁体   English   中英

查找值小于/大于另一个数据帧的行的行

[英]Find rows whose values are less/greater than rows of another dataFrame

我有 2 个数据框:

df = pd.DataFrame({'begin': [10, 20, 30, 40, 50],
                     'end': [15, 23, 36, 48, 56]})
   begin  end
0     10   15
1     20   23
2     30   36
3     40   48
4     50   56

df2 = pd.DataFrame({'begin2': [12, 13, 22, 40],
                      'end2': [14, 13, 26, 48]})
   begin2  end2
0      12    14
1      13    13
2      22    26
3      40    48

如何获取 df1 行内的 df2 行? 我希望将 df2 的每一行与 df1 的所有行进行比较。

也就是说,我想要一个 df3 像:

   begin2  end2
0      12    14
1      13    13
3      40    48

我试过:

df3 = df2.loc[ (df['begin'] <= df2['begin2']) & (df2['end2'] <= df['end'] )]

但它只比较行和行并要求相同大小的数据帧。

您需要apply boolean indexing

df = df2[df2.apply(lambda x: any((df['begin'] <= x['begin2']) & 
                                 (x['end2'] <= df['end'])), axis=1)]
print (df)
   begin2  end2
0      12    14
1      13    13
3      40    48

细节:

print (df2.apply(lambda x: any((df['begin'] <= x['begin2']) & 
                               (x['end2'] <= df['end'])), axis=1))
0     True
1     True
2    False
3     True
dtype: bool

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM