IIUC, создайте вспомогательный ряд, используя Series.value_counts
, затем используйте Series.map
, index.repeat
и DataFrame.loc
чтобы получить желаемый номер или повторений:
df = pd.DataFrame({'x-position': {1: 220, 2: 627, 3: 620, 4: 220, 5: 628, 6: 621}, 'y-position': {1: 220, 2: 220, 3: 220, 4: 220, 5: 220, 6: 220}, 'imageno': {1: 6, 2: 6, 3: 6, 4: 7, 5: 7, 6: 8}})
s = df['imageno'].value_counts()
df2 = df.loc[df.index.repeat(df['imageno'].add(1).map(s).fillna(0).astype(int))]
[вне]
x-position y-position imageno
1 220 220 6
1 220 220 6
2 627 220 6
2 627 220 6
3 620 220 6
3 620 220 6
4 220 220 7
5 628 220 7