У меня есть список фреймов данных, которые я хочу объединить в один фрейм данных .
Фреймы данных со списком с одинаковыми именами столбцов имеют разные индексы и наоборот.Каждый фрейм данных имеет 1 строку и 80 столбцов, а список имеет общую длину 8000 фреймов данных.
Вот уменьшенный пример моего списка фреймов данных:
import pandas as pd
u = pd.DataFrame(data=[[1, 2, '111']], columns = ['a', 'b', 'id'])
u = u.set_index('id')
v = pd.DataFrame(data=[[3, 4, '222']], columns = ['a', 'b', 'id'])
v = v.set_index('id')
w = pd.DataFrame(data=[[5, 6, '333']], columns = ['a', 'b', 'id'])
w = w.set_index('id')
x = pd.DataFrame(data=[[7, 8, '444']], columns = ['a', 'b', 'id'])
x = x.set_index('id')
y = pd.DataFrame(data=[[9, 10, '111']], columns = ['c', 'd', 'id'])
y = y.set_index('id')
z = pd.DataFrame(data=[[11, 12, '222']], columns = ['c', 'd', 'id'])
z = z.set_index('id')
list_df = [u, v, w, x, y, z]
Как я могу создать одну объединенную таблицу, которая выглядит следующим образом:
id a b c d
--------------------------
111 1.0 2.0 9.0 10.0
222 3.0 4.0 11.0 12.0
333 5.0 6.0 NaN NaN
444 7.0 8.0 NaN NaN
В настоящее время, из-за размера моего списка, я использую pd.concat
.Однако pd.concat(list_df, axis = 0)
дает:
id a b c d
--------------------------
111 1.0 2.0 NaN NaN
222 3.0 4.0 NaN NaN
333 5.0 6.0 NaN NaN
444 7.0 8.0 NaN NaN
111 NaN NaN 9.0 10.0
222 NaN NaN 11.0 12.0
и pd.concat(list_df, axis = 1)
дает:
id a b a b a b a b c d c d
----------------------------------------------------------------
111 1.0 2.0 NaN NaN NaN NaN NaN NaN 9.0 10.0 NaN NaN
222 NaN NaN 3.0 4.0 NaN NaN NaN NaN NaN NaN 11.0 12.0
333 NaN NaN NaN NaN 5.0 6.0 NaN NaN NaN NaN NaN NaN
444 NaN NaN NaN NaN NaN NaN 7.0 8.0 NaN NaN NaN NaN