将pandas中的两行合并为一行

时间:2018-03-30 18:02:21

标签: python pandas

我有一个像这样的数据框

no, frc, val 
1121,1,"John"
1121,0,236
3612,1,"Mary"
3612,0,545

我想要合并这样的数据

"John",236
"Mary",545

2 个答案:

答案 0 :(得分:2)

您可以使用merge()方法自我加入此DF的两个子集:

In [21]: (df[df['frc']==1]
            .drop('frc',1)
            .rename(columns={'val':'name'})
          .merge(df[df['frc']==0].drop('frc',1)))
Out[21]:
     no  name  val
0  1121  John  236
1  3612  Mary  545

答案 1 :(得分:2)

df.set_index(['no', 'frc']).val.unstack().rename(columns={0:'val', 1:'name'})

frc   val  name
no             
1121  236  John
3612  545  Mary

或产生OP输出

print(
    df.set_index(['no', 'frc']).val
      .unstack()[[1, 0]]
      .to_csv(index=False, header=False)
)

John,236
Mary,545