从透视表重命名列

0 投票
1 回答
4792 浏览
提问于 2025-04-17 23:09

我在一个数据表上运行了一个 pivot_table 操作,结果得到的列名是:

('firstvar', 8001)    ('firstvar', 8002)    ('secondvar', 8001)    ('secondvar', 8002)

但是在我使用这些数据之前,我需要把列名改成类似这样的:

firstvar_8001    firstvar_8002    secondvar_8001    secondvar_8002

我试着看看在做透视表的时候能不能直接改列名,但我觉得好像不行。所以我现在想找个办法在把数据保存为 CSV 文件之前,先把列名改了。

我需要在多个文件上运行这个操作,而这些文件里的 8000 个代码可能会变动,所以我在想用 regex(正则表达式)来处理,但我找不到用 regex 来改数据表列名的支持。

补充:我现在意识到这些名字其实是 Python 的 tuples(元组),我正在把它们转换成字符串并连接起来。

补充:我找到了一种笨拙的解决办法。我的问题是它不让我改元组的名字,所以我最后只能先导出数据再重新导入,这样就能把层级扁平化,然后再以这种方式改名。不过我真的不喜欢这个解决办法,所以如果有人有更好的方法,我会非常感激!

1 个回答

3

虽然回答得有点晚,但可能对其他人有帮助...

my_colnames = []
for i, a in enumerate(my_pivoted_table.columns.get_level_values(1)):
    my_colnames.append(str(a) + '_' + str(my_pivoted_table.columns.get_level_values(0)[i]))
my_pivoted_table.columns = my_colnames

撰写回答