如果数据框具有相同的索引,如何重塑数据框?

时间:2017-08-14 15:18:17

标签: python pandas

如果我有像

这样的数据框
df= pd.DataFrame(['a','b','c','d'],index=[0,0,1,1])
   0
0  a
0  b
1  c
1  d

如何根据下面的索引重构数据帧,即

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

3 个答案:

答案 0 :(得分:6)

让我们使用set_indexgroupbycumcountunstack

df.set_index(df.groupby(level=0).cumcount(), append=True)[0].unstack()

输出:

   0  1
0  a  b
1  c  d

答案 1 :(得分:3)

您可以将pivotcumcount

一起使用
a = df.groupby(level=0).cumcount()
df = pd.pivot(index=df.index, columns=a, values=df[0])

答案 2 :(得分:2)

几种方式

<强> 1

DataModel

<强> 2

In [490]: df.groupby(df.index)[0].agg(lambda x: list(x)).apply(pd.Series)
Out[490]:
   0  1
0  a  b
1  c  d

第3

In [447]: df.groupby(df.index).apply(lambda x: pd.Series(x.values.tolist()).str[0])
Out[447]:
   0  1
0  a  b
1  c  d

删除名称

In [455]: df.assign(i=df.index, c=df.groupby(level=0).cumcount()).pivot('i', 'c', 0)
Out[455]:
c  0  1
i
0  a  b
1  c  d