Репликация строк в кадре данных pandas по значению столбца и добавление нового столбца с индексом повторения - PullRequest
0 голосов
/ 11 мая 2018

Мой вопрос похож на один вопрос здесь . У меня есть фрейм данных, и я хочу повторить каждую строку фрейма данных k количество раз. Наряду с этим я также хочу создать столбец со значениями от 0 до k-1. Так

import pandas as pd

df = pd.DataFrame(data={
  'id': ['A', 'B', 'C'],
  'n' : [  1,   2,   3],
  'v' : [ 10,  13,   8]
})

what_i_want = pd.DataFrame(data={
  'id': ['A', 'B', 'B', 'C', 'C', 'C'],
  'n' : [ 1, 2, 2, 3, 3, 3],
  'v' : [ 10,  13, 13, 8, 8, 8],
  'repeat_id': [0, 0, 1, 0, 1, 2]
})

Команда ниже выполняет половину работы. Я ищу способ добавления столбца repeat_id.

df.loc[df.index.repeat(df.n)]

1 Ответ

0 голосов
/ 11 мая 2018

Используйте GroupBy.cumcount и copy во избежание SettingWithCopyWarning:

Если вы измените значения в df1 позже, вы обнаружите, что измененияне распространяться обратно к исходным данным (df), и что Pandas предупреждает.

df1 = df.loc[df.index.repeat(df.n)].copy()
df1['repeat_id'] = df1.groupby(level=0).cumcount()
df1 = df1.reset_index(drop=True)
print (df1)
  id  n   v  repeat_id
0  A  1  10          0
1  B  2  13          0
2  B  2  13          1
3  C  3   8          0
4  C  3   8          1
5  C  3   8          2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...