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

解决DataFrame拆列(unstack)后出现空值的问题

解决DataFrame转置模型响应列时的空值问题

你的代码出现空值的核心原因是:groupby后未做聚合操作就直接unstack,导致不同模型的行索引无法对齐,最终产生缺失值。以下是几种修正方案:

方案1:使用pivot(适用于每个分组-模型组合唯一的场景)

假设你的原DataFrame有唯一标识行的列(比如Question、ID),直接用pivot将模型作为列,自动对齐响应内容:

# 假设用Question作为行标识,替换成你实际的列名
df_new = df.pivot(index='Question', columns='Model', values='Model_Response').reset_index()
# 如果存在部分模型无响应的情况,可填充默认值
df_new = df.pivot(index='Question', columns='Model', values='Model_Response', fill_value='无响应').reset_index()

方案2:使用pivot_table(适用于存在重复分组-模型组合的场景)

如果同一分组下同一模型有多条响应,可指定聚合规则(如取第一条、合并内容),同时填充空值:

# 取每个分组-模型组合的第一条响应,空值填充为空字符串
df_new = df.pivot_table(
    index='Question',  # 替换为你的行标识列
    columns='Model',
    values='Model_Response',
    aggfunc='first',  # 也可以用'last'、lambda x: ','.join(x)合并多内容
    fill_value=''
).reset_index()

方案3:修正你原有的groupby+unstack代码

先对分组后的内容做聚合,再转置,最后填充空值:

# 按行标识(如Question)和Model分组,取第一条响应
df_grouped = df.groupby(['Question', 'Model'])['Model_Response'].first()
# 转置为列并排序,填充空值
df_new = df_grouped.unstack('Model').sort_index(axis=1).fillna('')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:38:17