使用Pandas

时间:2018-04-29 15:12:48

标签: python pandas dataframe rows

我确信这很容易做到,但我无法弄清楚。 我在python中编码并使用pandas处理数据帧。我的数据框看起来像这样:

a b  c
1 10 20
1 30 40
1 60 70
1 80 100
2 10 20
2 60 70
2 80 100

我想改变它:

a b1 c1 b2 c2 b3 c3 b4 c4
1 10 20 30 40 60 70 80 100
2 10 20 60 70 80 100 NA NA

基本上对于a中的值相同的每一行,取bc中的值并将它们转换为新列,这样我最终只会有一行对于a中的每个值。

我希望我能够清楚,如果不是,请不要犹豫告诉我。 提前感谢您提供的任何帮助!

弗洛里安。

1 个答案:

答案 0 :(得分:1)

我们需要在此处使用cumcount

创建帮助键
s=df.assign(key=df.groupby('a').cumcount()+1).set_index(['a','key']).stack().unstack([1,2])
s.columns=s.columns.map('{0[1]}{0[0]}'.format)
s
Out[396]: 
     b1    c1    b2    c2    b3     c3    b4     c4
a                                                  
1  10.0  20.0  30.0  40.0  60.0   70.0  80.0  100.0
2  10.0  20.0  60.0  70.0  80.0  100.0   NaN    NaN