按ID对熊猫行进行分组,为时间条目创建新列

时间:2020-02-25 11:03:32

标签: python pandas dataframe grouping

我有一个pandas数据框,它具有重复的ID,因为每一行代表一个时间量。

 pd.DataFrame([[1, 2], [1, 3], [2, 6], [2,7]], columns=['id', 'colA'])

我想用一种方式来变换它,即每一行代表一个ID,并且数据的时间序列方面被捕获到新的列中。即:我想输出看起来像这样:

pd.DataFrame([[1,2,3],[2,6,7]],columns=["id","colA_0","colA_1"])

我该如何实现?

1 个答案:

答案 0 :(得分:2)

使用GroupBy.cumcount作为计数器,通过DataFrame.set_index创建MultiIndex,然后通过Series.unstack进行整形:

df1 = (df.set_index(['id', df.groupby('id').cumcount()])['colA']
         .unstack()
         .add_prefix('colA_')
         .reset_index())
print (df1)
   id  colA_0  colA_1
0   1       2       3
1   2       6       7