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

基于同一ID的其他行数据填充缺失值的最优方法

按ID分组填充缺失的End值

我有一个按ID分组的数据集,部分End字段存在缺失,需要用同一ID下下一行的Start值填充当前行缺失的End值。例如第0行的End应填充为第1行的Start值11/2/23,数据集规模较大,需自动化处理。

示例数据

import pandas as pd

data = {
    "ID": [1, 1, 2, 2, 3, 3],
    "Start": ['11/1/23', '11/2/23', '12/12/23', '12/23/23', '9/4/23', '9/11/23'],
    "End": ['', '11/3/23', '12/13/23', '12/28/23', '','9/18/23']
}

df = pd.DataFrame(data)

原始数据输出:

ID  Start       End
0   1   11/1/23 
1   1   11/2/23     11/3/23
2   2   12/12/23    12/13/23
3   2   12/23/23    12/28/23
4   3   9/4/23  
5   3   9/11/23     9/18/23

解决方案

通过groupby按ID分组,结合shift(-1)获取同一ID下下一行的Start值,再用combine_first填充缺失的End值:

# 将空字符串转为NaN,便于后续填充逻辑处理
df['End'] = df['End'].replace('', pd.NA)

# 按ID分组,用下一行的Start值填充当前行缺失的End
df['End'] = df.groupby('ID')['Start'].shift(-1).combine_first(df['End'])

# 若需要将剩余可能的NaN转回空字符串(本例中无剩余)
df['End'] = df['End'].fillna('').astype(str)

最终结果

ID  Start       End
0   1   11/1/23     11/2/23
1   1   11/2/23     11/3/23
2   2   12/12/23    12/13/23
3   2   12/23/23    12/28/23
4   3   9/4/23      9/11/23
5   3   9/11/23     9/18/23

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:17:25