转置具有多列的pandas数据帧

时间:2017-03-29 09:53:15

标签: python python-2.7 pandas

我的数据框目前看起来像这样:

import numpy as np
raw_data = {'Series_Date':['2017-03-10','2017-03-13','2017-03-14','2017-03-15'],'SP':[35.6,56.7,41,41],'1M':[-7.8,56,56,-3.4],'3M':[24,-31,53,5]}
import pandas as pd
df = pd.DataFrame(raw_data,columns=['Series_Date','SP','1M','3M'])
print df

我希望以某种方式进行转换,以便将所有值字段转换为值列,并将日期作为行项追加。值字段的列名称将成为“描述”列的行。这就是生成的Dataframe应该如下所示:

import numpy as np
raw_data = {'Series_Date':['2017-03-10','2017-03-10','2017-03-10','2017-03-13','2017-03-13','2017-03-13','2017-03-14','2017-03-14','2017-03-14','2017-03-15','2017-03-15','2017-03-15'],'Value':[35.6,-7.8,24,56.7,56,-31,41,56,53,41,-3.4,5],'Desc':['SP','1M','3M','SP','1M','3M','SP','1M','3M','SP','1M','3M']}
import pandas as pd
df = pd.DataFrame(raw_data,columns=['Series_Date','Value','Desc'])
print df

有人可以帮我解释如何以这种方式翻转和转置我的DataFrame吗?

1 个答案:

答案 0 :(得分:2)

使用pd.meltDF从宽格式转换为长格式:

idx = "Series_Date"              # identifier variable
pd.melt(df, id_vars=idx, var_name="Desc").sort_values(idx).reset_index(drop=True)

enter image description here