Повторение строк кадра данных на основе значения столбца - PullRequest
0 голосов
/ 17 октября 2018

У меня есть фрейм данных, подобный этому:

df1 = pd.DataFrame({'a': [1,2],
                    'b': [3,4],
                    'c': [6,5]})
  df1
Out[150]: 
   a  b  c
0  1  3  6
1  2  4  5

Теперь я хочу создать df, который повторяет каждую строку на основе разницы между col b и c плюс 1. Так что diff между b и c для первогострока 6-3 = 3. Я хочу повторить эту строку 3 + 1 = 4 раза.Аналогично для второй строки разница составляет 5-4 = 1, поэтому я хочу повторить ее 1 + 1 = 2 раза.Столбец d добавлен, чтобы иметь значение от min (b) до diff между b и c (т.е. 6-3 = 3. Таким образом, оно идет от 3-> 6).Итак, я хочу получить это df:

  a  b  c d
0 1  3  6 3
0 1  3  6 4
0 1  3  6 5
0 1  3  6 6
1 2  4  5 4
1 2  4  5 5

1 Ответ

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

Сделайте это с помощью reindex + repeat, затем с помощью groupby cumcount назначьте новое значение d

df1.reindex(df1.index.repeat(df1.eval('c-b').add(1))).\
      assign(d=lambda x : x.c-x.groupby('a').cumcount(ascending=False))
Out[572]: 
   a  b  c  d
0  1  3  6  3
0  1  3  6  4
0  1  3  6  5
0  1  3  6  6
1  2  4  5  4
1  2  4  5  5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...