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

大数据量下Pandas DataFrame跨组高效插值(指定最近组)

大数据量Pandas跨组高效填充方案

针对你的需求,这里提供一套适合大数据量的向量化填充方案,完全避免低效的Python循环,步骤如下:

1. 构建示例DataFrame

先把你给出的原始数据转换成可操作的Pandas结构:

import pandas as pd
import numpy as np

raw_data = [
    ['A', 1, 10], ['A', 2, 15], ['A', 3, 30], ['A', 4, 50],
    ['B', 1, np.nan], ['B', 2, np.nan], ['B', 3, np.nan], ['B', 4, np.nan],
    ['C', 1, np.nan], ['C', 2, np.nan], ['C', 3, np.nan], ['C', 4, np.nan],
    ['D', 1, 5], ['D', 2, 10], ['D', 3, 15], ['D', 4, 20],
    ['E', 1, np.nan], ['E', 2, np.nan], ['E', 3, np.nan], ['E', 4, np.nan]
]
df = pd.DataFrame(raw_data, columns=['Group', 'Time', 'Value'])

2. 提取参考组的Time-Value映射

先把有完整数据的Group A和D的时间-值对应关系提取成字典,后续直接映射使用:

# 生成Group A的Time到Value的映射字典
a_time_value = df[df['Group'] == 'A'].set_index('Time')['Value'].to_dict()
# 生成Group D的Time到Value的映射字典
d_time_value = df[df['Group'] == 'D'].set_index('Time')['Value'].to_dict()

3. 批量填充缺失值

根据你的规则:

  • Group B用Group A的数据填充
  • Group C、E用Group D的数据填充

用df.loc结合map实现向量化填充,这是处理大数据量最快的方式之一:

# 填充Group B
df.loc[df['Group'] == 'B', 'Value'] = df.loc[df['Group'] == 'B', 'Time'].map(a_time_value)
# 填充Group C和E
target_groups = ['C', 'E']
df.loc[df['Group'].isin(target_groups), 'Value'] = df.loc[df['Group'].isin(target_groups), 'Time'].map(d_time_value)

4. 查看结果

执行后打印df就能得到你想要的预期输出:

print(df)

性能说明

这套方案全程使用Pandas的向量化操作,没有逐行循环,处理百万级甚至千万级数据时,速度比循环快几十到上百倍。映射字典只构建一次,重复利用,进一步降低计算成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:22:38