旋转和熔化,多个标题列到行

时间:2017-07-11 05:06:19

标签: python pandas

我有一个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有两个上标题。我想添加两个新列startend以及列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") 

但它不起作用。

1 个答案:

答案 0 :(得分:1)

您可以使用stackreset_indexrename

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