我有一个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")
但它不起作用。
答案 0 :(得分:1)
您可以使用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'})