Pandas将列添加到转置的periodindex obj?

时间:2015-09-16 22:21:17

标签: python pandas

Python的新手,并加快了熊猫的速度(0.16.2)。我有一个df(从Quandl返回)与行中的观察结果。我想转置数据帧,然后设置一个2列多索引:

>df
Period    Value
2013Q2    10000
2014Q2    15000
2015Q2    12500

>df.T
Period    2013Q2   2014Q2   2015Q2
Value     10000    15000    12500

Desired dataframe after reindex (2-column multi-index):
Period           2013Q2   2014Q2   2015Q2
ID    Measure    10000    15000    12500

但是,df.columns是我转置后的periodindex对象。我无法添加我想用来设置多索引的两个新列:

df['ID'] = 'XYZ'
df['Measure'] = 'EBIT'
DateParseError: unknown string format

对我来说,我无法在periodindex对象中添加非日期列标签。如果我尝试按位置添加列,它可以工作,但后来我在其他列中丢失了日期格式:

>df.insert(loc=5, column='ID', value='XYZ, allow_duplicates=False)
>df
Period    173      177      181      ID
Value     10000    15000    12500    XYZ

期间索引对我的原始列表有很大的帮助 - 我能够按季度分组,然后过滤掉我不想要的季度。我可以将它发送到dict,然后用标签替换时间戳,但是还有一种更好的方法,我还没有在文档中找到。

有没有办法可以创建两个新列,为现有观察值分配值,然后在不丢失列标题的情况下创建多索引?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以直接建立MultiIndex,如下所示:

In [27]: mi = pd.MultiIndex.from_tuples([('XYZ', 'EDBIT')], 
                                        names=['ID', 'Measure'])

In [28]: df.index = mi

In [29]: df
Out[29]: 
Period       2013Q2  2014Q2  2015Q2
ID  Measure                        
XYZ EDBIT     10000   15000   12500