diff --git a/extraction_service/operations/pivot.py b/extraction_service/operations/pivot.py index c5220a28..55b2a6f8 100644 --- a/extraction_service/operations/pivot.py +++ b/extraction_service/operations/pivot.py @@ -110,7 +110,7 @@ def pivot_long_to_wide( # ✨ 修复:更健壮的列名展平逻辑 if len(value_columns) == 1: - # 单个值列:列名是单层的 (pivot_value1, pivot_value2, ...) + # 单个值列:列名可能是单层的,也可能是元组 print(f'📝 单值列模式:展平列名', flush=True) # 获取原始值列名(用于生成新列名) @@ -119,8 +119,15 @@ def pivot_long_to_wide( # 生成新列名:值列名___透视值 new_columns = [] for col in df_pivot.columns: - # col 是透视列的某个值(如 0, 1, 2) - new_col_name = f'{value_col_name}___{col}' + # ✅ 修复:检查col是否是元组(pandas在某些情况下会返回元组) + if isinstance(col, tuple): + # 如果是元组 (值列名, 透视值),取第二个元素 + pivot_value = col[1] + new_col_name = f'{value_col_name}___{pivot_value}' + else: + # 如果不是元组,直接使用(兼容旧行为) + new_col_name = f'{value_col_name}___{col}' + new_columns.append(new_col_name) print(f' 生成列: {new_col_name}', flush=True)