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

Python for循环中拼接DataFrame时为聚类结果新增对应ID列的方法咨询

直接在生成聚类标签的DataFrame阶段新增ID列即可,修改后的代码如下:

df = pd.DataFrame()
d={}
n=5

for i in dd[:2]:
    d[i] = dds[i].iloc[: , 1:5].values   
    ac = AgglomerativeClustering(n_clusters=n, linkage='complete').fit(d[i])
    # 构造带ID的标签DataFrame
    labels = pd.DataFrame({
        "ID": i,
        "cluster_label": ac.labels_
    })
    # 拼接时添加ignore_index避免不同ID的索引重复冲突
    df = pd.concat([df, labels], ignore_index=True)
    print(i)
    print('Labels: ', labels)

如果后续需要将聚类结果和原始数据集做合并,可以保留分组数据的原始索引,添加一行代码即可:

labels.index = dds[i].index

针对大数据集场景,还可以优化掉提前生成dds分组字典的步骤,直接遍历groupby对象降低内存占用:

result_list = []
n = 5
# 遍历分组对象,仅在用到对应ID数据时才加载
for idx, (id_val, group_df) in enumerate(df_init.groupby("ID")):
    # 控制仅处理前2个ID
    if idx >= 2:
        break
    features = group_df.iloc[:, 1:5].values
    ac = AgglomerativeClustering(n_clusters=n, linkage='complete').fit(features)
    result_list.append(pd.DataFrame({
        "ID": id_val,
        "cluster_label": ac.labels_
    }, index=group_df.index))
df = pd.concat(result_list)

最终输出的df会包含ID和聚类标签两列,每一行标签和所属ID完全对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:06:02