我的数据框如下:
ID Date ColA1 ColB1 ColA2 ColB2 ColA3 ColB3
id1 date1 1 2 3 4 5 6
id2 date2 7 8 9 10 11 12
如何拆分列ColA2
,ColB2
,ColA3
,ColB3
,然后将它们作为行再次合并到数据集中(考虑ID
和Date
列)?
预期输出:
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
谢谢!
答案 0 :(得分:4)
您需要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()
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提供的新数据示例:
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