如何通过索引重塑多列数据框?

发布于 2021-01-29 15:05:20

这里开始。该解决方案仅适用于一列。如何改进多列解决方案。即如果我有一个像

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



   0 1
0 ab
0公元前
1立方厘米
1分贝

如何重塑像

  0 1 2 3
0 abbc 
1捷克克朗

如果df是

   0 1
0 ab
1立方厘米
1分贝

然后

   0 1 2 3
0 ab NaN NaN
1捷克克朗
关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    采用 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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看