Python-我想使用pandas将第二行的列移动到第一行列

时间:2017-04-25 15:52:41

标签: python python-2.7 pandas

我有像这样的csv数据

column1 column2 
A       12
A       13
B       15
B       16
C       12
C       14

我想通过创建另一个column3来合并第1列中具有相同值的行,或者说像这样的转置

column1 column2 column3
A       12      13
B       15      16
C       12      14

我正在使用pandas并希望为此运行一些循环,可能。

1 个答案:

答案 0 :(得分:3)

使用groupbycumcount一起设置索引,然后unstack

c = 'column1'
s = df.set_index([c, df.groupby(c).cumcount() + 2]).column2
s.unstack().add_prefix('column').reset_index()

  column1  column2  column3
0       A       12       13
1       B       15       16
2       C       12       14

如果组的数量不均匀,这将处理。

考虑df

column1 column2 
A       12
A       13
B       15
B       16
B       16
C       12
C       14
C       14
C       14

然后

c = 'column1'
s = df.set_index([c, df.groupby(c).cumcount() + 2]).column2
s.unstack().add_prefix('column').reset_index()

  column1  column2  column3  column4  column5
0       A     12.0     13.0      NaN      NaN
1       B     15.0     16.0     16.0      NaN
2       C     12.0     14.0     14.0     14.0

如果您想提前填写NaN,请使用fill_value

中的unstack参数
c = 'column1'
s = df.set_index([c, df.groupby(c).cumcount() + 2]).column2
s.unstack(fill_value=0).add_prefix('column').reset_index()


  column1  column2  column3  column4  column5
0       A       12       13        0        0
1       B       15       16       16        0
2       C       12       14       14       14