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

Pandas透视表存在空值,如何用其他列值填充并转换表结构

Pandas透视表实现及空值填充方案

1. 还原原始数据

先根据需求创建原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Food': ['Kiwi', 'Kiwi', 'Apple'],
    'Compound': ['Fat', 'Protein', 'Protein'],
    'Content in grams': [5, 3, 2]
})

2. 透视并填充空值

推荐使用pivot_table一步完成透视和空值填充,它比pivot更适配这类单值分组场景:

# 透视表设置:按Food分组,Compound转列,填充空值为0
pivoted_result = df.pivot_table(
    index='Food',
    columns='Compound',
    values='Content in grams',
    fill_value=0,  # 直接将空值替换为0
    aggfunc='first'  # 单条数据场景下,first/mean/sum效果一致
).reset_index()

# 清理列名层级,让结构更简洁
pivoted_result.columns.name = None

执行后输出结果:

FoodFatProtein
Apple02
Kiwi53

注:你提供的目标表格中Apple的Fat值标注为2,这与原始数据不符(原始数据中Apple无Fat记录),上述代码按逻辑填充为0,若需自定义填充值,只需修改fill_value参数即可。

备选方案:先透视后补全空值

如果已经完成透视得到含空值的表,可单独用fillna补全:

# 先执行透视
pivoted_temp = df.pivot(index='Food', columns='Compound', values='Content in grams').reset_index()
pivoted_temp.columns.name = None

# 填充空值为0
pivoted_result = pivoted_temp.fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:50:40