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

如何跟踪Pandas聚类后DataFrame元素的原始call来源

解决Pandas中聚类后元素的原始来源跟踪问题

问题分析

原始DataFrame中的元素经聚类重新排列后,需精准跟踪每个元素对应的原始call列来源。难点在于同一值多列重复出现时,要匹配到正确的来源(而非所有来源或最后一次出现的来源)。

解决方案

核心逻辑是通过记录元素的出现顺序,将聚类后的元素与原始元素按「值+出现次数」一一对应,从而准确匹配来源列。

步骤说明

  1. 处理原始表:将宽表转为长格式,过滤空值后,为每个相同值添加出现次数编号,标记其为该值的第几次出现。
  2. 处理聚类表:对聚类后的表执行相同的长格式转换和出现次数标记,确保同一值的编号规则与原始表一致。
  3. 合并与格式化:以「值+出现次数」为键合并两个长表,获取每个聚类元素的原始来源列,格式化要求的{来源列, 值}形式后,转换回宽表结构。

完整代码

import pandas as pd
import numpy as np

# 原始DataFrame
df = pd.DataFrame({"call 1": ['debit card','bond',np.nan],
                  "call 2": ['debit card','mortgage','spending limit'],
                  "call 3":['payment limit','debit card',np.nan]})

# 聚类后的DataFrame
dfc = pd.DataFrame( {'cluster 1': ['payment limit', 'spending limit',np.nan],
 'cluster 2': ['debit card', 'debit card', 'debit card'],
 'cluster 3': [ 'bond', 'mortgage',np.nan]})

# 处理原始表:转换为长格式并添加出现次数
df_long = df.unstack().reset_index()
df_long.columns = ['source_col', 'row_idx', 'value']
df_long = df_long.dropna(subset=['value'])
df_long['occurrence'] = df_long.groupby('value').cumcount()

# 处理聚类表:转换为长格式并添加出现次数
dfc_long = dfc.unstack().reset_index()
dfc_long.columns = ['cluster_col', 'row_idx', 'value']
dfc_long = dfc_long.dropna(subset=['value'])
dfc_long['occurrence'] = dfc_long.groupby('value').cumcount()

# 合并表并格式化内容
merged = pd.merge(dfc_long, df_long, on=['value', 'occurrence'], how='left')
merged['formatted'] = merged.apply(lambda x: f"{{{x['source_col']}, {x['value']}}}", axis=1)

# 转换回宽表并调整格式
result = merged.pivot(index='row_idx', columns='cluster_col', values='formatted')
result = result[dfc.columns].reset_index(drop=True)
result = result.where(pd.notna(result), np.nan)

print(result)

输出结果

cluster 1               cluster 2                 cluster 3
0   {call 3, payment limit}  {call 1, debit card}      {call 1, bond}
1  {call 2, spending limit}  {call 2, debit card}    {call 2, mortgage}
2                      NaN  {call 3, debit card}                   NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:27:20