Развернуть DataFrame по диапазону - PullRequest
0 голосов
/ 11 октября 2018

Необходимо дублировать индекс 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

1 Ответ

0 голосов
/ 11 октября 2018

Используйте 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 добавьте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...