gpt4 book ai didi

python - Pandas 数据框,每个步骤重复行值

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:27 24 4
gpt4 key购买 nike

我想复制 Pandas 数据框中的行。每行应重复 n 次,其中 n 是从步骤 1 到步骤 N 的列数。我有什么:

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,但到达最后阶段的步骤太多这可能吗?

最佳答案

您可以尝试将所有步骤列名称重命名为唯一并堆叠数据帧

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

关于python - Pandas 数据框,每个步骤重复行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53493449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com