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

如何使用Python完成指定DataFrame宽表转长表的转换需求?

Python表格转换实现方案

这个需求属于典型的宽表转长表场景,用pandas的melt方法可以快速实现,无需手写循环拆分逻辑。

依赖安装

如果环境还没装pandas,先执行安装命令:
pip install pandas

完整实现代码

import pandas as pd

def transform_follower_data(raw_df):
    # 核心转换:将粉丝数值列拆分为多行
    melted_df = raw_df.melt(
        # 保留不需要拆分的公共字段
        id_vars=['org', 'start date', 'stop date'],
        # 指定要拆分的两个粉丝数值字段
        value_vars=['organic follower', 'paid follower'],
        # 拆分后生成的类型字段名
        var_name='Follower Type',
        # 拆分后生成的数值字段名
        value_name='Follower Count'
    )
    # 格式化Follower Type的取值为要求的格式
    melted_df['Follower Type'] = melted_df['Follower Type'].replace({
        'organic follower': 'organic',
        'paid follower': 'paid'
    })
    # 调整字段顺序和需求要求完全一致
    melted_df = melted_df[['org', 'start date', 'stop date', 'Follower Type', 'Follower Count']]
    return melted_df

# 本地测试示例
if __name__ == "__main__":
    # 构造示例原始数据(对应提到的2条org为One的记录)
    test_raw_data = [
        {'org': 'One', 'organic follower': 1200, 'paid follower': 300, 'start date': '2024-01-01', 'stop date': '2024-01-31'},
        {'org': 'One', 'organic follower': 1500, 'paid follower': 450, 'start date': '2024-02-01', 'stop date': '2024-02-29'}
    ]
    raw_df = pd.DataFrame(test_raw_data)
    result_df = transform_follower_data(raw_df)
    # 打印结果验证
    print(result_df)

补充说明

  • 运行测试代码后输出的结果就是要求的格式,每条原始记录会拆分为organic、paid对应的两条记录,字段完全匹配需求。
  • 如果需要过滤粉丝数为空的无效记录,可以在转换逻辑最后添加melted_df = melted_df.dropna(subset=['Follower Count'])即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:36:04