Python pandas - MultiIndexed Series to Dataframe

时间:2014-07-26 22:20:27

标签: python pandas

(背景:我正在尝试学习Pandas和matplotlib并从我的irclogs中获取一些漂亮的图表。)

我设法将一些数据解析为多索引系列(让我们称之为series):

                        msgs
id    datetime_period
A     2014-07-04 07:00  1
      2014-07-04 08:00  2
      2014-07-08 11:00  5
B     2014-07-08 11:00  1
C     2014-07-04 07:00  2

对于图表,我想将其组织成一个类似这样的数据框:

index             A  B  C
2014-07-04 07:00  1  0  2
2014-07-04 08:00  2  0  0
2014-07-08 11:00  5  1  0

我将如何继续这样做?我想我可以这样做:

df = DataFrame({i: series.ix[i] for i in ['A', 'B', 'C'] })

但是还有更多的熊猫'办法? (或者,如果没有,我将如何从系列中检索列表[' A' B'' C']而不是如上所述明确写出来?)

或者(在它更容易使用的情况下),还可以使用原始的' raw'我用来构建系列的数据框。它包含每个缺口发布的每条消息的时间戳,如下所示:

timestamp              id 
2014-07-04 07:11:00    A
2014-07-04 07:12:32    C
2014-07-04 07:15:03    C
etc.

1 个答案:

答案 0 :(得分:3)

unstack可用于将MultiIndex的级别转换为列。 fillna将缺失值替换为0,如您所需的输出所示。

In [313]: series.unstack(level='id').fillna(0)
Out[313]: 
id                   A  B  C
datetime_period             
2014-07-04 07:00:00  1  0  2
2014-07-04 08:00:00  2  0  0
2014-07-08 11:00:00  5  1  0