如何拆分列并将其合并为行? [英] How to split columns and merge them as rows?

查看:163
本文介绍了如何拆分列并将其合并为行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框,如下所示:

I have a data frame as follows:

ID    Date   ColA1   ColB1   ColA2   ColB2   ColA3   ColB3 
id1   date1   1        2      3        4       5       6      
id2   date2   7        8      9        10      11      12

如何拆分列ColA2ColB2ColA3ColB3,然后将它们作为行再次合并到数据集中(考虑IDDate列)?

How can I split the columns ColA2, ColB2, ColA3, ColB3 and merge them again to the dataset as rows (considering the ID and Date columns)?

预期输出:

ID   Date     ColA  ColB
id1  date1    1      2
id1  date1    3      4
id1  date1    5      6
id2  date2    7      8
id2  date2    9      10
id2  date2    11     12

谢谢!

推荐答案

您需要wide_to_long

pd.wide_to_long(df.reset_index(), stubnames = ['ColA', 'ColB'], i = 'index', j = 'value').reset_index(drop = True)

    ColA    ColB
0   1   2
1   7   8
2   3   4
3   9   10
4   5   6
5   11  12


修改
没有reset_index()


Edit
Output without reset_index()

pd.wide_to_long(df.reset_index(), stubnames = ['ColA', 'ColB'], i = 'index', j = 'value')
            ColA    ColB
index   value       
0       1   1       2
1       1   7       8
0       2   3       4
1       2   9       10
0       3   5       6
1      3    11      12


Edit2
使用OP提供的新数据示例:


Edit2
With the new data sample provide by OP:

pd.wide_to_long(df, stubnames = ['ColA', 'ColB'], i = ['ID', 'Date'], j = 'value').reset_index([0,1])

    ID  Date    ColA    ColB
value               
1   id1 date1   1   2
2   id1 date1   3   4
3   id1 date1   5   6
1   id2 date2   7   8
2   id2 date2   9   10
3   id2 date2   11  12

这篇关于如何拆分列并将其合并为行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆