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

Python Pandas DataFrame按id分组取各变量最新迭代的非NaN值方法

Python DataFrame按unique_id分组取各变量最新迭代非空值方案

核心逻辑

按unique_id分组后,先保证每个分组内的记录按iteration升序排列,用前向填充覆盖掉迭代过程中的空值,最后取每个分组的最后一行即可,会自动保留最大迭代号,以及每个变量最后一次出现的非空值,天然支持批量处理大量不同unique_id。

完整代码示例

import pandas as pd
import numpy as np

# 构造示例数据,实际使用时替换成你自己的DataFrame即可
df = pd.DataFrame({
    'unique_id': [111]*5,
    'iteration': [1,2,3,4,5],
    'variable_1': ['apple', np.nan, 'orange', 'pear', np.nan],
    'variable_2': [np.nan, 'table', np.nan, np.nan, 'chair']
})

# 预处理:若数据中缺失值为字符串格式'NaN',先转成pandas识别的空值
# df = df.replace('NaN', np.nan)

# 1. 按分组和迭代号排序,保证迭代顺序正确
df_sorted = df.sort_values(['unique_id', 'iteration'], ascending=True)

# 2. 分组处理得到结果
result = df_sorted.groupby('unique_id').apply(
    lambda x: x.ffill().iloc[-1]
).reset_index(drop=True)

输出结果验证

运行后得到的result如下,完全符合预期:

unique_iditerationvariable_1variable_2
1115pearchair

适用说明

  • 不需要手动指定变量列,不管有多少个variable_x列都会自动适配处理
  • 支持百万级数据的批量分组处理,性能满足绝大多数业务场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:06:02