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

如何转置DataFrame?仅转置指定comment列的宽表转长表实现问询

如何将多列评论转换为长格式DataFrame?

嗨,这个需求其实是Pandas里非常常见的宽表转长表操作,两种方法都能完美解决,我给你详细演示下:

方法一:使用melt函数(通用型)

melt是Pandas里处理宽转长的通用工具,不管目标列名有没有规律都能轻松适配。步骤如下:

首先构造你的示例DataFrame:

import pandas as pd

# 原始宽格式DataFrame
df = pd.DataFrame({
    '行标识': ['Row1', 'Row2'],
    'project name': ['NY', 'LA'],
    'comment1': ['Not good', 'job well done'],
    'comment2': ['somewhat ok', 'standard'],
    'comment3': ['ridiculous', 'under performance'],
    'comment4': ['satisfactory', 'standard']
})

然后用melt完成转换:

# 执行宽转长操作
melted_df = df.melt(
    id_vars=['行标识', 'project name'],  # 指定需要保留的非转置列
    value_vars=['comment1', 'comment2', 'comment3', 'comment4'],  # 指定需要转置的列
    value_name='comment'  # 转置后的值列命名为comment
).drop(columns='variable')  # 删掉自动生成的原列名列(不需要的话)

# 重新生成新的行标识(和你的目标格式完全匹配)
melted_df['行标识'] = [f'Row{i+1}' for i in range(len(melted_df))]

# 查看最终结果
print(melted_df)

方法二:使用wide_to_long函数(针对有规律的列名)

如果你的目标列是统一前缀+数字后缀的格式(比如comment1-comment4),用wide_to_long会更简洁高效:

# 执行宽转长操作
long_df = pd.wide_to_long(
    df,
    stubnames='comment',  # 指定列名的前缀
    i=['行标识', 'project name'],  # 指定索引列
    j='comment_num'  # 指定后缀数字的临时列名(之后可以删除)
).reset_index().drop(columns='comment_num')

# 重新生成行标识
long_df['行标识'] = [f'Row{i+1}' for i in range(len(long_df))]

print(long_df)

两种方法最终都会输出你想要的长格式DataFrame,选个顺手的用就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:04:51