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

将pandas pivot_table结果存入CSV时丢失表头数据的求助

解决Pandas Pivot Table保存CSV时丢失数据/表头的问题

我猜你遇到的问题大概率是Pivot Table生成的结果带有索引,或者表头层级的问题导致保存CSV时看起来数据不全。先把你的示例代码补全,然后一步步解决:

首先,先看完整的示例代码(补全了pivot_table的常见用法):

import pandas as pd
import numpy as np

data = [
    {'TestPriority': 3, 'AutomationStatus': 'Done'},
    {'TestPriority': 4, 'AutomationStatus': 'Review'},
    {'TestPriority': 2, 'AutomationStatus': 'Review for Automation'},
    {'TestPriority': 2, 'AutomationStatus': 'Review for Automation'}
]
df = pd.DataFrame(data)
df['AutomationStatus'] = np.where(
    df['AutomationStatus'] == 'Done',
    'Automated',
    'Manual'
)
# 按优先级和自动化状态统计数量
res = df.pivot_table(
    index='TestPriority',
    columns='AutomationStatus',
    aggfunc='size',
    fill_value=0
)

常见问题与解决方案

1. 索引未转为普通列,导致表头/数据显示异常

默认pivot_table的结果会把index参数指定的列作为行索引,直接保存CSV时,这个索引会作为第一列但没有列名,看起来像是表头缺失。解决方法是重置索引,把索引转为普通列:

# 重置索引,将TestPriority转为普通列
res.reset_index(inplace=True)
# 保存时不要写入默认的行索引
res.to_csv('pivot_result.csv', index=False)

这样保存后的CSV会有完整的表头:TestPriority,Automated,Manual,数据也全部保留:

TestPriority,Automated,Manual
2,0,2
3,1,0
4,0,1

2. 多层表头导致保存混乱

如果你的pivot_table使用了多个聚合函数或多层列,会生成多层表头,直接保存CSV可能会出现表头拆分的问题。可以先扁平化表头:

# 示例:使用多个聚合函数
res = df.pivot_table(
    index='TestPriority',
    columns='AutomationStatus',
    aggfunc={'TestPriority': ['count', 'sum']},
    fill_value=0
)
# 扁平化多层表头,用下划线连接层级
res.columns = ['_'.join(col).strip() for col in res.columns.values]
# 重置索引并保存
res.reset_index(inplace=True)
res.to_csv('pivot_result_flat.csv', index=False)

保存后的表头会变成:TestPriority,Automated_count,Automated_sum,Manual_count,Manual_sum,结构清晰。

3. 缺失分组被自动丢弃

如果某些TestPriority没有对应的AutomationStatus,默认pivot_table会丢弃这些分组。可以加上dropna=False强制保留所有可能的分组:

res = df.pivot_table(
    index='TestPriority',
    columns='AutomationStatus',
    aggfunc='size',
    fill_value=0,
    dropna=False
)

这样即使某个优先级没有自动化或手动的测试用例,也会保留行并用0填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:39