Как создать новые повторяющиеся строки DataFrame с использованием индексов из исходного DF - PullRequest
1 голос
/ 19 июня 2020

У меня есть DataFrame сгенерированных случайных агентов. Однако я хочу расширить их, чтобы они соответствовали популяции, которую я ищу, поэтому мне нужно повторить строки в соответствии с моими выборочными индексами.

Вот код al oop, который занимает вечность:

df = pd.DataFrame({'a': [0, 1, 2]})    
sampled_indexes = [0, 0, 1, 1, 2, 2, 2]
new_df = pd.DataFrame(columns=['a'])
for i, idx in enumerate(sampled_indexes):
    new_df.loc[i] = df.loc[idx]

Затем исходный DataFrame:

df
   a
0  0
1  1
2  2

дает мне результат увеличенного нового кадра данных

new_df
   a
0  0
1  0
2  1
3  1
4  2
5  2
6  2

Итак, этот l oop слишком медленный с DataFrame, содержащий 34 000 или более строк (занимает вечность).

Как сделать это проще и быстрее?

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Переиндексируйте фрейм данных с помощью sampled_indexes, затем сбросьте индекс.

df.reindex(sampled_indexes).reset_index(drop=True)
1 голос
/ 19 июня 2020

Можно сделать DataFrame.merge:

df = pd.DataFrame({'a': [0, 1, 2]})
sampled_indexes = [0, 0, 1, 1, 2, 2, 2]

print( df.merge(pd.DataFrame({'a': sampled_indexes})) )

Печать:

   a
0  0
1  0
2  1
3  1
4  2
5  2
6  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...