简体   繁体   English

用非唯一索引重塑DataFrame

[英]reshaping a DataFrame with non-unique index

I have the following DataFrame: 我有以下DataFrame:

In [299]: df
Out[299]:
                       a    b
DATE
2017-05-28 15:01:37  0.0  1.0
2017-05-28 15:01:39  1.0  0.0
2017-05-28 15:01:39  1.0  0.0
2017-05-28 15:01:39  1.0  0.0
2017-05-28 15:01:39  1.0  0.0
2017-05-28 15:01:39  1.0  0.0
2017-05-28 15:01:42  1.0  0.0
2017-05-28 15:02:10  1.0  0.0
2017-05-28 15:02:14  0.0  1.0
2017-05-28 15:02:23  0.0  1.0
2017-05-28 15:02:28  1.0  0.0
2017-05-28 15:02:34  0.0  1.0
2017-05-28 15:02:34  0.0  1.0

I can get the shape I'm looking for by doing the following: 通过执行以下操作,可以得到所需的形状:

In [300]: xa = df.groupby(df.index).apply(lambda x: x['a'].values)

In [301]: xb = df.groupby(df.index).apply(lambda x: x['b'].values)

In [302]: ya = pd.DataFrame(xa.tolist(), index=xa.index)

In [303]: yb = pd.DataFrame(xb.tolist(), index=xb.index)

In [304]: new_df = pd.concat([ya, yb], axis=1, keys=['a', 'b'])

In [305]: new_df
Out[305]:
                       a                        b
                       0    1    2    3    4    0    1    2    3    4
DATE
2017-05-28 15:01:37  0.0  NaN  NaN  NaN  NaN  1.0  NaN  NaN  NaN  NaN
2017-05-28 15:01:39  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0
2017-05-28 15:01:42  1.0  NaN  NaN  NaN  NaN  0.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:10  1.0  NaN  NaN  NaN  NaN  0.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:14  0.0  NaN  NaN  NaN  NaN  1.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:23  0.0  NaN  NaN  NaN  NaN  1.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:28  1.0  NaN  NaN  NaN  NaN  0.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:34  0.0  0.0  NaN  NaN  NaN  1.0  1.0  NaN  NaN  NaN

Is there a more efficient way to get the same result? 有没有更有效的方法来获得相同的结果?

Append an index level with cumcount 附加带有cumcount的索引级别

df.set_index(df.groupby(level='DATE').cumcount(), append=True).unstack()

                       a                        b                    
                       0    1    2    3    4    0    1    2    3    4
DATE                                                                 
2017-05-28 15:01:37  0.0  NaN  NaN  NaN  NaN  1.0  NaN  NaN  NaN  NaN
2017-05-28 15:01:39  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0
2017-05-28 15:01:42  1.0  NaN  NaN  NaN  NaN  0.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:10  1.0  NaN  NaN  NaN  NaN  0.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:14  0.0  NaN  NaN  NaN  NaN  1.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:23  0.0  NaN  NaN  NaN  NaN  1.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:28  1.0  NaN  NaN  NaN  NaN  0.0  NaN  NaN  NaN  NaN
2017-05-28 15:02:34  0.0  0.0  NaN  NaN  NaN  1.0  1.0  NaN  NaN  NaN

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM