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

Pandas DataFrame透视无效:从Tableau导入数据后透视无变化

Pandas透视操作后DataFrame未更新的问题解决

问题背景

从Tableau工作表导出的数据已导入Pandas的view_data_df,需要将长表数据透视为宽表格式(把Measure Names的不同取值转为列),但执行透视代码后,原DataFrame完全没有变化。

原始数据结构及内容:

C WeekMeasure NamesNT LoginSiteMeasure Values
0202306Calls AHT1daa04Derby Sell0
1202306All Calls1daa04Derby Sell972
2202306Core Calls1daa04Derby Sell972
3202306Glass Calls1daa04Derby Sell0
4202306Outbound Calls1daa04Derby Sell9

执行的无效代码:

view_data_df.pivot_table(values = 'Measure Values', 
                         index=['C Week','NT Login','Site'],
                         columns = 'Measure Names', 
                         aggfunc=sum).reset_index()
print(view_data_df)

问题原因

pivot_table方法是非原地操作,它不会直接修改原DataFrame,而是返回一个全新的透视后的DataFrame。如果没有将这个返回值赋值给变量,操作结果就会被丢弃,原DataFrame自然保持不变。

修正代码

将透视结果赋值给原变量或新变量,同时处理透视后的列名层级问题:

# 执行透视并将结果赋值回原DataFrame
view_data_df = view_data_df.pivot_table(
    values='Measure Values',
    index=['C Week', 'NT Login', 'Site'],
    columns='Measure Names',
    aggfunc=sum
).reset_index()

# 移除列名的层级结构
view_data_df.columns = view_data_df.columns.droplevel(0)

# 重新设置列名(可选,根据需求调整顺序)
view_data_df.columns = ['C Week', 'NT Login', 'Site', 'All Calls', 'Calls AHT', 'Core Calls', 'Glass Calls', 'Outbound Calls']

# 重置索引
view_data_df.reset_index(drop=True, inplace=True)

print(view_data_df)

效果说明

执行修正后的代码后,view_data_df会变成期望的宽表格式:C Week、NT Login、Site作为标识列,各类Measure Names作为独立数值列,对应填充Measure Values的求和结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:40:33