小编典典

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

python

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

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



   0 1
0 ab
     0 BC
    1 cubic centimeter
    1 dB

如何重塑像

  0 1 2 3
0 abbc 
1Czech Krone

如果df是

   0 1
0 ab
1Cubic centimeter
1Decibels

然后

   0 1 2 3
0 ab NaN NaN
1Czech Krone

阅读 171

收藏
2021-01-20

共1个答案

小编典典

采用 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
2021-01-20