如何在Pandas中加载长面板数据集?

时间:2015-05-27 11:50:15

标签: python pandas

我有一个长格式的面板数据集,即数据中的观察值位于Panel_ID - Day级别。我有,例如,m Panel_IDs,每个Panel_ID都有T(m)日观察。

例如,数据看起来像这样。我展示了一个带有2个面板ID(1和2)的示例,但数据包含很多。 X是一个感兴趣的变量。

Panel_ID Day X  
1  2-feb  5  
1  3-feb  4.3  
1  5-feb  3  
2  2-feb  0  
2  5-feb  0.5  
2  8-feb  3.2  

等。在Panel_ID中,天数不一定相同,每个Panel_ID都有自己的每日观察次数。

如何在Pandas中加载此数据集,以便Pandas识别其面板结构?

非常感谢!

1 个答案:

答案 0 :(得分:1)

只需正常加载read_csv()或其他任何内容。我复制了您的数据并自己使用了read_clipboard()

然后,设置索引:

df = df.set_index(['Panel_ID','Day'])

                  X
Panel_ID Day       
1        2-feb  5.0
         3-feb  4.3
         5-feb  3.0
2        2-feb  0.0
         5-feb  0.5
         8-feb  3.2

如果您愿意,此时已完成,但如果您想从数据框转换为面板,那么在索引df后很容易:

pan = df.to_panel()

老实说,我通常更喜欢将事物保存为多索引数据框而不是增加面板结构的复杂性,但你可以用任何一种方式做事。请注意,即使将其保留为标准数据框,您也可以使用stack()之类的内容轻松进行大量重新整形。例如,使用unstack()

从窄到宽转换
df.unstack(level=1)

             X                  
Day      2-feb 3-feb 5-feb 8-feb
Panel_ID                        
1            5   4.3   3.0   NaN
2            0   NaN   0.5   3.2

另请参阅文档here