Как объединить или объединить три таблицы с разным количеством столбцов в пандах? - PullRequest
1 голос
/ 01 декабря 2019

Мои проблемы начались с файла JSON, где у меня есть определенная информация об «устройстве», с определенными параметрами для разных устройств.

Я могу захватить каждое устройство, например, в виде одного кадра данных для каждого устройства. И они будут иметь 40-60 столбцов, включая общие столбцы.

Пример данных приведен ниже:

enter image description here

Воспроизводимый код:

df1 = pd.DataFrame({'id': {0: 1122},
 'c1': {0: 'uid'},
 'c2': {0: 'iopw'},
 'c3': {0: 'uywy'},
 'c4': {0: '7uyw'},
 'c5': {0: 'iwoq'},
 'c6': {0: 'owoe'}}
)

df2 = pd.DataFrame({'id': {0: 9910},
 'c1': {0: 'mnjjj'},
 'c3': {0: 'mhji'},
 'c6': {0: 'mb '},
 'c8': {0: 'bly'},
 'c14': {0: 'bnhg'},
 'c15': {0: 'kkkl'},
 'c20': {0: 'llug'},
 'c25': {0: '87jo'}})


df3 = pd.DataFrame({'id': {0: 2020},
 'c4': {0: 'kvkh'},
 'c5': {0: 'kjhjkh'},
 'c10': {0: 'cvcvc'},
 'c15': {0: 'ququ'}})

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

dfs = [df1, df2, df3]
from functools import reduce
df_final = reduce(lambda left,right: pd.merge(left,right,on='id',how="outer"), dfs)

Как можно избежать дублирования или есть ли какой-либо другой более чистый способ объединения или объединения таблиц, чтобы я не имел повторяющихся столбцов?


Ожидаемыйвывод показан ниже. Он должен иметь 3 строки и правильное количество столбцов

{'id': {0: 1122, 1: 9910, 2: 2020},
 'c1': {0: 'uid', 1: 'mnjj', 2: nan},
 'c2': {0: 'iopw', 1: nan, 2: nan},
 'c3': {0: 'uywy', 1: nan, 2: nan},
 'c4': {0: '7uyw', 1: nan, 2: 'kvkh'},
 'c5': {0: 'iwoq', 1: nan, 2: 'kjhjkh'},
 'c6': {0: 'owoe', 1: 'mb', 2: nan},
 'c7': {0: nan, 1: nan, 2: nan},
 'c8': {0: nan, 1: 'bly', 2: nan},
 'c9': {0: nan, 1: nan, 2: nan},
 'c10': {0: nan, 1: nan, 2: 'cvcvc'},
 'c11': {0: nan, 1: nan, 2: nan},
 'c12': {0: nan, 1: nan, 2: nan},
 'c13': {0: nan, 1: nan, 2: nan},
 'c14': {0: nan, 1: 'bnhg', 2: nan},
 'c15': {0: nan, 1: 'kkkl', 2: 'ququ'},
 'c16': {0: nan, 1: nan, 2: nan},
 'c17': {0: nan, 1: nan, 2: nan},
 'c18': {0: nan, 1: nan, 2: nan},
 'c19': {0: nan, 1: nan, 2: nan},
 'c20': {0: nan, 1: 'llug', 2: nan},
 'c21': {0: nan, 1: nan, 2: nan},
 'c22': {0: nan, 1: nan, 2: nan},
 'c23': {0: nan, 1: nan, 2: nan},
 'c24': {0: nan, 1: nan, 2: nan},
 'c25': {0: nan, 1: '87jo', 2: nan}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...