首页 > 解决方案 > 拆分和连接数据框

问题描述

所以我有一个看起来像这样的数据框:

>>>df = pd.DataFrame({
        'id': [i for i in range(5)],
        '1': ['a', 'b', 'c', 'd', 'e'],
        '2': ['f', 'g', 'h', 'i', 'g']
        })
>>>df

    id  1   2
 0  0   a   f
 1  1   b   g
 2  2   c   h
 3  3   d   i
 4  4   e   g

我想将此数据框转换为以下数据框

>>>df_concatenated
    id  val
1   0   a
1   1   b
1   2   c
1   3   d
1   4   e
2   0   f
2   1   g
2   2   h
2   3   i
2   4   g

标签: pandas

解决方案


一种方法是 pd.melt

pd.melt(df, id_vars=['id'], value_vars=['1','2']).set_index('variable',append=True)

另一种是通过.loc访问器拆分和连接。长但有效

res1=df.iloc[:,[0,2]]
res1.columns=['id','val']
res=df.iloc[:,:2]
res.columns=['id','val']
res2=pd.concat([res1,res])
res2

 variable   id  value
    0   1   0   a
    1   1   1   b
    2   1   2   c
    3   1   3   d
    4   1   4   e
    5   2   0   f
    6   2   1   g
    7   2   2   h
    8   2   3   i
    9   2   4   g

推荐阅读