数据框值范围内的行重复

时间:2019-09-06 12:52:57

标签: python pandas

我有以下数据框:

   A.low  A.up  B  C
0  1      3     1  D 
1  1      2     2  E
2  2      4     1  E

如何复制索引A.low和A.up范围内的行。这些步骤是整数。所以我想要的输出是:

   A.low  A.up  B  C  A
0  1      3     1  D  1
1  1      3     1  D  2
2  1      3     1  D  3
3  1      2     2  E  1
4  1      2     2  E  2
5  2      4     1  E  2
6  2      4     1  E  3
7  2      4     1  E  4

1 个答案:

答案 0 :(得分:3)

首先将Index.repeatDataFrame.loc一起使用,然后通过GroupBy.cumcountA创建新列A.low,最后创建默认RangeIndex

df = df.loc[df.index.repeat(df['A.up'] - df['A.low'] + 1)]
df['A'] = df.groupby(level=0).cumcount() + df['A.low']
df = df.reset_index(drop=True)
print (df)
   A.low  A.up  B  C  A
0      1     3  1  D  1
1      1     3  1  D  2
2      1     3  1  D  3
3      1     2  2  E  1
4      1     2  2  E  2
5      2     4  1  E  2
6      2     4  1  E  3
7      2     4  1  E  4