熊猫长到宽阔的形式重新取样

时间:2018-05-02 03:19:04

标签: python pandas

我正在尝试解决如何重新采样以下数据的问题。诀窍是在重采样期间需要维护两个变量(标识符和变量)。

我尝试使用以下代码重新采样:

df.set_index('date').to_period('d').resample('d').fillna(method='ffill')

但它不允许我给出索引不是唯一的。所以,我想也许如果我把它扩展到多层列,我可以重新采样重新形状的数据帧,同时保持标识符和变量信息。

原始数据格式如下:

date, identifier, variable, value
2018-04-01, BBN, M3M, 24
2018-04-07, BBN, M3M, 25
2018-04-14, BBN, M3M, 25
2018-04-21, BBN, M3M, 25
2018-04-01, BBN, M12M, 48
2018-04-07, BBN, M12M, 52
2018-04-14, BBN, M12M, 50
2018-04-21, BBN, M12M, 49
2018-04-01, MXP, M3M, 18
2018-04-07, MXP, M3M, 20
2018-04-14, MXP, M3M, 25
2018-04-21, MXP, M3M, 22
2018-04-01, MXP, M12M, -10
2018-04-07, MXP, M12M, -12
2018-04-14, MXP, M12M, -14
2018-04-21, MXP, M12M, -18

预期重塑:

      identifier  BBN,       MXP
      variable    M3M, M12M,M3M,M12M
date  2018-04-01, 24, 48, 18, -10
date  2018-04-07, 25, 52, 20, -12 
date  2018-04-14, 25, 50, 25, -14
date  2018-04-21, 25, 49, 22, -18

我认为,一旦采用这种格式,日期索引应该是唯一的,那么我将能够重新采样数据以包括缺失的天数。我只是不确定如何透过表来获取多级列。

任何机构都可以指出我正确的方向,或提供任何帮助或建议???

1 个答案:

答案 0 :(得分:0)

使用set_indexunstack

修复代码
df.set_index(['date','identifier','variable'])['value'].unstack([1,2])
Out[558]: 
 identifier  BBN        MXP      
 variable    M3M  M12M  M3M  M12M
date                             
2018-04-01    24    48   18   -10
2018-04-07    25    52   20   -12
2018-04-14    25    50   25   -14
2018-04-21    25    49   22   -18

pivot_table

df.pivot_table(index='date',columns=['identifier','variable'],values='value')
Out[560]: 
identifier   BBN        MXP     
variable    M12M  M3M  M12M  M3M
date                            
2018-04-01    48   24   -10   18
2018-04-07    52   25   -12   20
2018-04-14    50   25   -14   25
2018-04-21    49   25   -18   22