Как объединить 4 DataFrame в один?
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
df1 = pd.DataFrame({'type' : [3200, 3210, 3800, 4000, 4001]})
df2 = pd.DataFrame({'mcc_code' : [742, 743, 744, 745, 746], 'mcc_desc' : ['a', 'b', 'c', 'd', 'f']})
df3 = pd.DataFrame({'datetime' : [10, 11, 12, 13, 14], 'amount' : [1000, 1200, 4000, 5300, 1250]})
df4 = pd.DataFrame({'id' : [10928546, 10928547, 10928548, 10928549, 10928550], 'gender' : [0, 1, 1, 0, 1]})
Необходимо соединить df3 c остальными df. При этом необходимо соединить df4 с помощью left join, а с оставшимися df - через inner (реальные данные содержат более 100 000 рядов).
pd.concat([df3, df4], axis=0, join = 'left').concat([df3, df1, df2], axis=0, join = 'inner')
выдаёт ValueError...
Подскажите, пожалуйста, эффективный способ решения данной задачи?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Судя по примеру данных из вопроса, единственный вариант объединения - это по индексу, т.к. у вас нет столбца, который бы существовал во всех фреймах и по которому их можно было бы объединить.
Поэтому решение будет очень простым:
res = pd.concat([df1, df2, df3, df4], axis=1)
Результат:
In [14]: res
Out[14]:
type mcc_code mcc_desc datetime amount id gender
0 3200 742 a 10 1000 10928546 0
1 3210 743 b 11 1200 10928547 1
2 3800 744 c 12 4000 10928548 1
3 4000 745 d 13 5300 10928549 0
4 4001 746 f 14 1250 10928550 1