У меня есть коллекция файлов с некоторыми общими столбцами, к которым я хочу присоединиться. В моей настоящей проблеме есть несколько разнородных и общих столбцов. В этом игрушечном примере у меня есть набор файлов a
и набор файлов b
, которые имеют уникальные столбцы и имеют идентичные столбцы c
.
$ for ii in $(ls *.dat) ; do echo " "; echo $ii ; cat $ii ; done
a1.dat
a,c
4,8
1,10
2,3
a2.dat
a,c
1,2
3,4
b1.dat
b,c
2,8
2,10
1,3
b2.dat
b,c
.2,2
.8,4
Я хочу просмотреть эти файлы и объединить их в один фрейм данных. Вот что я пробовал до сих пор. Я объединяю первые файлы, чтобы убедиться, что у меня собраны все имена столбцов, а затем объединяю оставшиеся файлы. Когда я объединяю "внутренним", возвращается пустой фрейм данных.
$ cat s.py
import pandas as pd
dat = pd.DataFrame()
for ii in [1, 2]:
for jj in ['a', 'b']:
d = pd.read_csv('%s%i.dat' % (jj, ii))
if ii == 1: dat = pd.concat([dat, d])
else: dat = pd.merge(dat, d, how='outer')
print(dat)
$ Python s.py
a b c
0 4.0 NaN 8
1 1.0 NaN 10
2 2.0 NaN 3
3 NaN 2.0 8
4 NaN 2.0 10
5 NaN 1.0 3
6 1.0 NaN 2
7 3.0 NaN 4
8 NaN 0.2 2
9 NaN 0.8 4
Это не мой желаемый вывод. Я не понимаю, как я могу сделать эту работу лучше. Желаемый результат был
a b c
0 4.0 2.0 8
1 1.0 2.0 10
2 2.0 1.0 3
3 1.0 0.2 2
4 3.0 0.8 4