熊猫数据帧,重复行对于每个步长值

问题描述 投票:1回答:1

我想在熊猫数据帧复制行。每一行应该被重复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但太多的步骤,以达到最后阶段,这可能吗?

python pandas dataframe aggregate-functions
1个回答
0
投票

您可以尝试重新命名所有的步骤列名作为唯一的和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
© www.soinside.com 2019 - 2024. All rights reserved.