如何从DataFrame中提取满足另一DataFrame范围约束的最小子DataFrame
实现步骤
- 计算df1的y列极值
- 基于df1的极值计算df2的左右边界
- 按边界筛选df2得到目标df3
完整代码
import pandas as pd # 示例数据构造 df1 = pd.DataFrame({'y': [3.0, 4.0, 5.0, 6.0]}) df2 = pd.DataFrame({'y': [1.0, 2.0, 5.0, 7.0, 8.0]}) # 步骤1:获取df1的y列最大最小值 df1_min_y = df1['y'].min() df1_max_y = df1['y'].max() # 步骤2:计算左右边界,增加空值判断兼容边界场景 left_series = df2[df2['y'] < df1_min_y]['y'] left_bound = left_series.max() if not left_series.empty else df2['y'].min() right_series = df2[df2['y'] > df1_max_y]['y'] right_bound = right_series.min() if not right_series.empty else df2['y'].max() # 步骤3:筛选df2得到df3,如果需要限制左边界则替换为 df2[(df2['y'] >= left_bound) & (df2['y'] <= right_bound)] df3 = df2[df2['y'] <= right_bound].reset_index(drop=True) print(df3)
输出结果
y 0 1.0 1 2.0 2 5.0 3 7.0
内容的提问来源于stack exchange,提问作者bib
相关产品推荐
相关产品推荐

