Как правильно объединить датасеты с разным количеством столбцов?

Собираю маленькие 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
→ Ссылка