Необходимо дублировать индекс dataframe
от 0
до value
в столбце. Есть ли (векторизованный) способ расширения этого df1
на df2
? Спасибо
import pandas as pd
df1 = pd.DataFrame(range(3), index=range(3000, 3003))
0
3000 0
3001 1
3002 2
df2 = ???
0
3000 0
3001 0
3001 1
3002 0
3002 1
3002 2
Используйте Index.repeat
с GroupBy.cumcount
:
df1 = df1.loc[df1.index.repeat(df1[0] + 1)]
df1[0] = df1.groupby(0).cumcount()
print (df1)
0
3000 0
3001 0
3001 1
3002 0
3002 1
3002 2
Для Series
используйте Index.to_series
:
s = df1.index.repeat(df1[0] + 1).to_series()
s = s.groupby(s).cumcount()
print (s)
3000 0
3001 0
3001 1
3002 0
3002 1
3002 2
dtype: int64
и DataFrame
из Series
add Series.to_frame
:
df = s.groupby(s).cumcount().to_frame()
print (df)
0
3000 0
3001 0
3001 1
3002 0
3002 1
3002 2