如何通过索引重塑多列数据框? [英] How to reshape a multi-column dataframe by index?

查看:85
本文介绍了如何通过索引重塑多列数据框?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据此处.该解决方案仅适用于一列.如何改进多列解决方案.即如果我有一个像

Following from here . The solution works for only one column. How to improve the solution for multiple columns. i.e If I have a dataframe like

df= pd.DataFrame([['a','b'],['b','c'],['c','z'],['d','b']],index=[0,0,1,1])


   0  1
0  a  b
0  b  c
1  c  z
1  d  b

如何像


  0   1  2  3
0  a  b  b  c 
1  c  z  d  b

如果df是


   0  1
0  a  b
1  c  z
1  d  b

然后


   0  1   2  3
0  a  b NaN  NaN
1  c  z   d  b

推荐答案

使用flatten/ravel

In [4401]: df.groupby(level=0).apply(lambda x: pd.Series(x.values.flatten()))
Out[4401]:
   0  1  2  3
0  a  b  b  c
1  c  z  d  b

或者,stack

In [4413]: df.groupby(level=0).apply(lambda x: pd.Series(x.stack().values))
Out[4413]:
   0  1  2  3
0  a  b  b  c
1  c  z  d  b

而且索引不相等

In [4435]: df.groupby(level=0).apply(lambda x: x.values.ravel()).apply(pd.Series)
Out[4435]:
   0  1    2    3
0  a  b  NaN  NaN
1  c  z    d    b

这篇关于如何通过索引重塑多列数据框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆