如何快速获取多DataFrame中X≈1.0对应的Y值范围?
解决方案
假设你的10个DataFrame已存在(比如命名为df1到df10),可以用以下Python代码快速完成需求:
步骤1:统一管理所有DataFrame
先把所有DataFrame放入一个列表,方便批量处理:
import pandas as pd # 将所有DataFrame存入列表 df_collection = [df1, df2, df3, df4, df5, df6, df7, df8, df9, df10]
步骤2:定义函数提取单个DataFrame的目标Y值
这个函数会筛选出X接近1.0的行,返回最接近1.0的X对应的Y值(也可根据需求调整为取范围内Y值的均值):
def get_target_y(df, tolerance=0.01): # 筛选X在[0.99, 1.01]区间内的行 valid_rows = df[(df['X'] >= 1 - tolerance) & (df['X'] <= 1 + tolerance)] if valid_rows.empty: return None # 无符合条件的行时返回None,可根据需求修改 # 找到X与1.0差值最小的行,返回对应的Y值 closest_idx = (valid_rows['X'] - 1).abs().idxmin() return valid_rows.loc[closest_idx, 'Y']
步骤3:批量提取并计算Y值范围
遍历所有DataFrame收集Y值,再计算最大值与最小值的差值:
# 收集所有有效Y值(过滤掉无结果的情况) target_ys = [y for y in map(get_target_y, df_collection) if y is not None] # 计算Y值范围 y_range = max(target_ys) - min(target_ys) print(f"所有目标Y值的范围为: {y_range}")
可选调整
- 若你确认每个DataFrame必然存在接近1.0的X,可去掉空值判断,简化函数逻辑。
- 若需要取X在阈值内所有Y值的平均值,将函数返回值改为
valid_rows['Y'].mean()即可。
内容的提问来源于stack exchange,提问作者Android17
相关产品推荐
相关产品推荐

