You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现DataFrame中Value列值分配至UpperBound与LowerBound列

DataFrame区间匹配与填充实现方案

需求说明

原始DataFrame结构(包含ID、Value、UpperBound、LowerBound四列):

ID | Value | UpperBound | LowerBound
1     23        NaN         NaN
2     55        NaN         NaN
3     87        NaN         NaN
4     99        NaN         NaN
5     NaN       50          5
6     NaN       5           1
7     NaN       95          50
8     NaN       99          95

需根据指定区间(1-5、5-50、50-95、95-99),将Value列非空值匹配到对应上下界并填充至UpperBound和LowerBound列,最终将Value列全部置为NaN,期望输出如下:

ID | Value | UpperBound | LowerBound
1     NaN        50         5
2     NaN        95         50
3     NaN        95         50
4     NaN        99         95
5     NaN       50          5
6     NaN       5           1
7     NaN       95          50
8     NaN       99          95

Python实现代码

import pandas as pd
import numpy as np

# 构造原始DataFrame
data = {
    'ID': [1, 2, 3, 4, 5, 6, 7, 8],
    'Value': [23, 55, 87, 99, np.nan, np.nan, np.nan, np.nan],
    'UpperBound': [np.nan, np.nan, np.nan, np.nan, 50, 5, 95, 99],
    'LowerBound': [np.nan, np.nan, np.nan, np.nan, 5, 1, 50, 95]
}
df = pd.DataFrame(data)

# 定义指定区间:(下界, 上界)
intervals = [(1, 5), (5, 50), (50, 95), (95, 99)]

# 遍历区间,匹配并填充上下界
for lower, upper in intervals:
    # 筛选Value非空且落在当前区间内的行(示例中99匹配95-99区间,故用<=upper)
    mask = df['Value'].notna() & (df['Value'] > lower) & (df['Value'] <= upper)
    df.loc[mask, ['LowerBound', 'UpperBound']] = [lower, upper]

# 将Value列全部置为NaN
df['Value'] = np.nan

# 打印结果
print(df)

代码说明

  • 构造与样本一致的原始DataFrame;
  • 定义需求中的区间集合,每个区间以(下界, 上界)元组形式存储;
  • 遍历每个区间,通过布尔掩码筛选出符合条件的行,批量填充对应的LowerBound和UpperBound;
  • 最后统一将Value列设置为NaN,完成需求。

内容的提问来源于stack exchange,提问作者Sara Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:15:34