Как правильно объединить датасеты с разным количеством столбцов?
Собираю маленькие DataFrame в CSV. В дальнейшем планирую их объединить. Эти датасеты могут быть разные, колличесвто столбцов может отличаться.
Как правильно объединить датасеты друг с другом в это случае? Или стоит транспонировать датасеты?
Пример
есть 1й датасет
a_1 b_1 c_1
1 1 2
1 1 1
0 0 1
есть 2й датасет
a_1 b_1 c_1 d_1
2 1 1 2
1 1 0 2
1 0 1 0
Как их правильно объединить? Т.е. получить что-то такое:
file a_1 b_1 c_1 d_1
n_1 1 1 1 NaN
n_1 1 1 0 NaN
n_1 0 0 1 NaN
n_2 2 1 1 2
n_2 1 1 0 2
n_2 1 0 1 0
Или лучше транспонировать и объединить?
rotation_1 rotation_2 diff file_name
a_1 1 1 0 name_1
b_1 1 1 0 name_1
c_1 2 1 1 name_1
Как более правильно сделать для дальнейшего анализа и как реализовать?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
res = (pd
.concat([df.assign(file=f"n_{i}")
for i, df in enumerate([d1, d2], 1)],
ignore_index=True))
результат:
In [56]: res
Out[56]:
a_1 b_1 c_1 file d_1
0 1 1 2 n_1 NaN
1 1 1 1 n_1 NaN
2 0 0 1 n_1 NaN
3 2 1 1 n_2 2.0
4 1 1 0 n_2 2.0
5 1 0 1 n_2 0.0
исходные фреймы:
In [57]: d1
Out[57]:
a_1 b_1 c_1
0 1 1 2
1 1 1 1
2 0 0 1
In [58]: d2
Out[58]:
a_1 b_1 c_1 d_1
0 2 1 1 2
1 1 1 0 2
2 1 0 1 0