我有以下数据框:
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
答案 0 :(得分:3)
首先将Index.repeat
与DataFrame.loc
一起使用,然后通过GroupBy.cumcount
与A
创建新列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