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

如何使用Pandas将第一张截图的数据转换为第三张截图的格式?

Pandas 格式转换教程:从分组表格到扁平化明细行

嘿,作为Pandas新手遇到这种格式转换问题太正常了,我来一步步帮你搞定:

需求梳理(根据截图场景推断)

你的原始数据应该是分组展示的:同一日期、同一项目下的明细行,只有该组第一行填写了日期和项目名,后续行这两列是空的;而目标格式是让每一行都包含完整的日期、项目名和对应明细,也就是把分组标识填充到每一行明细中。

具体实现步骤

假设你的数据已经读取到Pandas的DataFrame中,我们可以通过以下几步完成转换:

  1. 读取数据(根据文件类型选择)
    如果是Excel文件:

    import pandas as pd
    # 替换成你的实际文件路径
    df = pd.read_excel("your_data_file.xlsx")
    

    如果是CSV文件:

    df = pd.read_csv("your_data_file.csv")
    
  2. 前向填充分组标识
    原始数据中日期(Date)和项目名(Project)列的空值,我们用ffill()(前向填充)把上一行的有效值填充到当前空行,这样每个明细行就能对应到所属的日期和项目:

    # 替换成你数据里实际的列名
    df[["Date", "Project"]] = df[["Date", "Project"]].ffill()
    

    小提示:如果你的空值是空白字符串而非NaN,需要先转换再填充:

    df.replace("", pd.NA, inplace=True)
    df[["Date", "Project"]] = df[["Date", "Project"]].ffill()
    
  3. 清理无效行
    如果数据中有明细列(比如Details)为空的行,用dropna()去掉这些无效行:

    # 替换成你数据里的明细列名
    df = df.dropna(subset=["Details"])
    
  4. 重置索引(可选)
    清理后索引可能不连续,重置索引让结果更整洁:

    df = df.reset_index(drop=True)
    

验证结果

运行完上面的代码后,你可以打印df或者导出成文件,就能得到和目标截图一致的扁平化格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:45:39