создать n копий строк в pandas - PullRequest
0 голосов
/ 02 марта 2020

Какой самый быстрый способ развернуть (скопировать n раз) строки кадра данных на основе значения столбца. Таким образом, если значение столбца в этой строке равно 10, эту строку необходимо скопировать 10 раз.

Пример:

import pandas as pd
df = pd.DataFrame({"A":[1,45], "B":[2,3]})

операция

Результат должен выглядеть следующим образом:

A   B
1   2
1   2
45  3
45  3
45  3

Ответы [ 3 ]

3 голосов
/ 02 марта 2020

Вы можете обойтись с repeat и loc:

df.loc[df.index.repeat(df['B'])]

Выход:

    A  B
0   1  2
0   1  2
1  45  3
1  45  3
1  45  3
1 голос
/ 02 марта 2020

Мы также можем использовать DataFrame.reindex с Index.repeat

df.reindex(df.index.repeat(df['B']))
    A  B
0   1  2
0   1  2
1  45  3
1  45  3
1  45  3

, если вам нужно:

df.reindex(df.index.repeat(df['B']).astype(int))
1 голос
/ 02 марта 2020

Попробуйте использовать это:

df.loc[np.repeat(df.index.values, df['B'])]

Повторяет строку в указателе c index для количества раз, указанного в столбце B.

Также вы можете попробовать посмотреть здесь: Python Pandas репликация строк в фрейме данных Не совсем то же самое, но есть много решений для репликации строк.

...