Pandas实现Excel透视表效果:行转列需求技术求助
解决方法
要实现你需要的类似Excel透视表的行转列效果,直接用Pandas的pivot_table或pivot方法即可,比单独用groupby更直接。以下是具体代码:
核心代码
假设你已经将Excel数据读取为DataFrame df:
import pandas as pd # 生成透视表 df_pivoted = df.pivot_table( index='Project', columns='Status', values='PF_Invoice_Amount', aggfunc='sum' # 若同一项目+状态有多条记录,sum会自动求和;你的示例中组合唯一,用first也可 ).reset_index() # 处理空值和表头格式 df_pivoted = df_pivoted.fillna("").rename_axis(None, axis=1) # 查看结果 print(df_pivoted)
如果你的数据中每个Project+Status组合唯一,也可以用更轻量的pivot方法:
df_pivoted = df.pivot(index='Project', columns='Status', values='PF_Invoice_Amount').reset_index().fillna("").rename_axis(None, axis=1)
代码说明
pivot_table/pivot:专门用于行转列的透视表功能,指定index为行分组依据(Project),columns为列分组依据(Status),values为要展示的数值(PF_Invoice_Amount)。reset_index():将Project从索引列转为普通列,匹配你的目标格式。fillna(""):将空值替换为空白,和示例输出一致。rename_axis(None, axis=1):移除列轴的名称(原Status),让表头更简洁。
运行结果
执行后会得到和你目标格式一致的DataFrame:
Project Paid Not Paid 0 FS Revadim 30000 1 FS Segula 15000 55000 2 Payita II 100000 3 Solfarm 32000 4 Tropigas 20000 5 Trufps 23000
内容的提问来源于stack exchange,提问作者danielmf93
相关产品推荐
相关产品推荐

