如何调整pivot生成的DataFrame:移除date_captured标签并保留table_name索引
解决Pivot后列标签残留的问题
嘿,我明白你的困扰了!当你用pivot方法后,列会自动保留原列名date_captured作为层级标签,这就是为什么你始终看到它的原因。reset_index是用来处理行索引转列的,所以对列标签不起作用,咱们换个思路解决:
方法一:直接清除列的名称
你只需要把结果DataFrame的columns.name设为None就行,代码如下:
import pandas as pd # 你的原始数据 data = {'table_name': {0: 'emp', 1: 'emp', 2: 'emp'}, 'date_captured': {0: '5/1/2019', 1: '5/2/2019', 2: '5/3/2019'}, 'column_name': {0: 'unit', 1: 'unit', 2: 'unit'}, 'value': {0: 1, 1: 1, 2: 2}} df = pd.DataFrame(data) # 执行pivot p = df.pivot(index='table_name', columns='date_captured', values='value') # 清除列标签 p.columns.name = None # 查看结果 print(p)
方法二:使用rename_axis方法
另一种更简洁的方式是用rename_axis直接移除列的层级标签:
p = df.pivot(index='table_name', columns='date_captured', values='value').rename_axis(columns=None)
这两种方法都能得到你想要的结果:
5/1/2019 5/2/2019 5/3/2019 table_name emp 1 1 2
简单来说,问题的核心是pivot后列会保留原分组列的名称作为层级标识,咱们只需要清除这个标识就能达到目标啦!
内容的提问来源于stack exchange,提问作者Dread
相关产品推荐
相关产品推荐

