我想在熊猫数据帧复制行。每一行应该被重复n次,其中n是一个数从步骤1到stepN列。我有的:
import pandas as pd
pd.DataFrame(data={
'id': ['A', 'B', 'C'],
'n' : [ 1, 2, 3],
'step1' : [ '10rs', '13rs', '8rs'],
'step2' : [ '100rs', '130rs', '8rs'],
'step3' : [ '1000rs', '1rs', '8rs'],
'step4' : [ '1rs', '3rs', '8rs']
})
id n step1 step2 step3 step4
0 A 1 10rs 100rs 1000rs 1rs
1 B 2 13rs 130rs 1rs 3rs
2 C 3 8rs 8rs 8rs 8rs
我想要的回报:
pd.DataFrame(data={
'id': ['A', 'A', 'A', 'A', 'B', 'B','B','B','C','C','C','C'],
'n' : [1 , 1 , 1 , 1, 2 , 2 , 2 ,2 , 3,3 ,3, 3 ],
'step' : [ 10, 13, 13, 1, 13, 130 , 1, 1, 8 ,8 ,8 ,8 ]})
id n step
0 A 1 10
1 A 1 13
2 A 1 13
3 A 1 1
4 B 2 13
5 B 2 130
6 B 2 1
7 B 2 1
8 C 3 8
9 C 3 8
10 C 3 8
11 C 3 8
我试图pd.pivot
但太多的步骤,以达到最后阶段,这可能吗?
您可以尝试重新命名所有的步骤列名作为唯一的和stack
数据框
what_i_have.rename(columns=lambda x: 'step' if 'step' in x else x,inplace=True)
what_i_have.set_index(['id','n']).stack().reset_index()
日期:
id n level_2 0
0 user1 1 step 10rs
1 user1 1 step 100rs
2 user1 1 step 1000rs
3 user1 1 step 1rs
4 user2 2 step 13rs
5 user2 2 step 130rs
6 user2 2 step 1rs
7 user2 2 step 3
8 user3 3 step 8rs
9 user3 3 step 8rs
10 user3 3 step 8rs
11 user3 3 step 8rs