如何使用Pandas将第一张截图的数据转换为第三张截图的格式?
Pandas 格式转换教程:从分组表格到扁平化明细行
嘿,作为Pandas新手遇到这种格式转换问题太正常了,我来一步步帮你搞定:
需求梳理(根据截图场景推断)
你的原始数据应该是分组展示的:同一日期、同一项目下的明细行,只有该组第一行填写了日期和项目名,后续行这两列是空的;而目标格式是让每一行都包含完整的日期、项目名和对应明细,也就是把分组标识填充到每一行明细中。
具体实现步骤
假设你的数据已经读取到Pandas的DataFrame中,我们可以通过以下几步完成转换:
读取数据(根据文件类型选择)
如果是Excel文件:import pandas as pd # 替换成你的实际文件路径 df = pd.read_excel("your_data_file.xlsx")如果是CSV文件:
df = pd.read_csv("your_data_file.csv")前向填充分组标识
原始数据中日期(Date)和项目名(Project)列的空值,我们用ffill()(前向填充)把上一行的有效值填充到当前空行,这样每个明细行就能对应到所属的日期和项目:# 替换成你数据里实际的列名 df[["Date", "Project"]] = df[["Date", "Project"]].ffill()小提示:如果你的空值是空白字符串而非
NaN,需要先转换再填充:df.replace("", pd.NA, inplace=True) df[["Date", "Project"]] = df[["Date", "Project"]].ffill()清理无效行
如果数据中有明细列(比如Details)为空的行,用dropna()去掉这些无效行:# 替换成你数据里的明细列名 df = df.dropna(subset=["Details"])重置索引(可选)
清理后索引可能不连续,重置索引让结果更整洁:df = df.reset_index(drop=True)
验证结果
运行完上面的代码后,你可以打印df或者导出成文件,就能得到和目标截图一致的扁平化格式啦!
内容的提问来源于stack exchange,提问作者Gary Dorman
相关产品推荐
相关产品推荐

