枢轴和融化,多个标题的列到行[英] Pivoting and melting, multiple header column to row

本文是小编为大家收集整理的关于枢轴和融化,多个标题的列到行的处理方法,想解了枢轴和融化,多个标题的列到行的问题怎么解决?枢轴和融化,多个标题的列到行问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个 csv 文件,里面有一个像这样的表格

                             1/1/2017           3/4/2017
                             2/2/2018           5/6/2018
Group   ID    SecID  ISIN    a        b   c     a         b   c  ... 
xxxx    xx    xxxx   xxxx    x        x   x     x         x  x

正如您在上表中看到的,前四个是可以的,但列 a、b、c 有两个高标题.我想添加两个新列 start 和 end 以及列 a、b、c 并将前两个标题数据放入开始和结束列.

请注意前两行日期与标题中的"a"列相关联.

所以它应该是这样的:

 Group   ID    SecID  ISIN  start        end       a  b  c
 xxxx    xxx    xxx    xxx   1/1/2017    2/2/2018  x  x  x 
 xxxx    xxx    xxx    xxx   3/4/2017    5/6/2018  x  x  x 

是的,会创建重复记录,我可以得到解决方案吗?我的导入代码:

import pandas as pd
import numpy as np
df=pd.read_csv('test.csv',header=[0,1,2])

我试过融化它,

df = pd.melt(df, id_vars=["Group", "Id","ISIN","SecId"],
                  var_name="Others", value_name="Value") 

但它没有用.

推荐答案

你可以使用stack、reset_index和rename:

df = df.set_index(['Group','ID','SecID','ISIN'])
df.stack([0,1]).reset_index().rename(columns={'level_4':'start','level_5':'end'})

本文地址:https://www.itbaoku.cn/post/1727800.html