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

如何新增缺失行保证时间序列长度一致以适配KML纵向聚类

解决方案(Python Pandas实现)

你遇到的KML报错本质是纵向聚类要求每个受试者(id)的观测时点长度完全一致,补全所有id的1-4时点缺失行即可解决,具体实现如下:

1. 构造示例数据(可直接替换为你的真实数据)

import pandas as pd

# 原始DataFrame
df = pd.DataFrame({
    'id': [1,1,1,1,2,2,2],
    'timeframe': [1,2,3,4,1,2,4],
    'distance': [1.1,1.1,1.2,1.1,1.1,1.1,1.1]
})

2. 生成全量id+timeframe组合

先确定所有需要覆盖的timeframe范围,再和所有唯一id做笛卡尔积,得到每个id都包含4个时点的完整结构:

# 提取所有唯一id
all_ids = df['id'].unique()
# 定义需要覆盖的timeframe范围(可根据你的实际需求调整)
all_timeframes = range(1, 5)
# 生成id和timeframe的全量组合
full_index = pd.MultiIndex.from_product([all_ids, all_timeframes], names=['id', 'timeframe'])
# 重索引得到补全空行后的DataFrame
df_full = df.set_index(['id', 'timeframe']).reindex(full_index).reset_index()

3. 用同时点平均值填充缺失distance

这里按相同时点下所有非缺失distance的均值填充,符合纵向数据的填充逻辑,不会引入跨时点偏差:

# 计算每个timeframe对应的平均distance
time_mean = df_full.groupby('timeframe')['distance'].transform('mean')
# 填充缺失值
df_full['distance'] = df_full['distance'].fillna(time_mean)

验证结果

打印df_full可以看到,id=2缺失的timeframe=3行已补全,distance值为同时点的平均值1.2,所有id都有4条对应记录,可直接输入KML模型运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:06:03