Подтвердить что ты не робот

Как объединить два фрейма данных в один фрейм данных?

Я использую фреймы данных Pandas. У меня есть начальный фрейм данных, скажем, D. Я извлекаю из него два фрейма данных следующим образом:

A = D[D.label == k]
B = D[D.label != k]

затем я меняю метку в A и B

A.label = 1
B.label = -1

Я хочу объединить A и B, чтобы иметь их в одном фрейме данных, что-то вроде операции объединения. Порядок данных не важен. Однако когда мы выбираем A и B из D, они сохраняют свои индексы из D.

4b9b3361

Ответ 1

Я считаю, что вы можете использовать метод append

bigdata = data1.append(data2, ignore_index=True)

чтобы их индексы просто не использовали ключевое слово ignore_index...

Ответ 2

Вы также можете использовать pd.concat, который особенно полезен, когда вы объединяете более двух фреймов данных:

bigdata = pd.concat([data1, data2], ignore_index=True, sort =False)

Ответ 3

Мысль добавить это здесь, если кто-то сочтет это полезным. @ostrokach уже упомянул, как вы можете объединить кадры данных между строками, которые

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

Чтобы объединиться по столбцам, вы можете использовать следующий синтаксис:

df_col_merged =pd.concat([df_a, df_b], axis=1)

Ответ 4

Есть еще одно решение для случая, когда вы работаете с большими данными и вам нужно объединить несколько наборов данных. concat может сильно concat производительность, поэтому, если вы не хотите каждый раз создавать новый df, вместо этого вы можете использовать понимание списка:

frames = [ process_file(f) for f in dataset_files ]
result = pd.append(frames)

(как указано здесь в документации в нижней части раздела):

Примечание. Однако стоит отметить, что concat (и, следовательно, append) создает полную копию данных, а постоянное повторное использование этой функции может привести к значительному снижению производительности. Если вам нужно использовать операцию над несколькими наборами данных, используйте понимание списка.