擅长:python、mysql、java
<p>您可以选择的另一种方法是创建笛卡尔积并过滤您感兴趣的行。您不需要对数据进行两次排序(这可能代价高昂),但可能需要更多内存</p>
<pre><code>cartesian_product = pd.merge(df1.assign(key=0), df2.assign(key=0), how='outer').drop('key', axis=1)
mask = (cartesian_product['Net Cost'] >= cartesian_product['Cost (low)'])
& (cartesian_product['Net Cost'] < cartesian_product['Cost (upp)'])
cartesian_product[mask]
Cat Nr Net Cost Status Cost (low) Cost (Upp) Retail
5 2801 825646183913 8.50 ACTIVE 8.16 9.25 16.99
15 2802 603497902941 7.96 ACTIVE 7.16 8.15 14.99
28 2803 603497897452 9.35 ACTIVE 9.26 10.75 18.99
43 2804 4050538324761 14.45 ACTIVE 13.76 14.75 26.99
50 2805 4050538307429 10.20 ACTIVE 9.26 10.75 18.99
</code></pre>
<p>当然,您可以相应地过滤数据帧</p>
<p>顺便说一句:有人对如何正确使用带空格的列名有什么建议吗?从剪贴板上读会把很多东西混在一起;)</p>