Мне нужно объединить 2 фрейма данных, индексы которых являются строками. Однако я сталкиваюсь со следующей ошибкой:
TypeError: Cannot concatenate list of ['DataFrame', 'DataFrame']
Я провел некоторое исследование, но не нашел объяснения этой ошибке.
Вот пример того, что происходит:
Кадр данных 1:
a=pd.DataFrame({'a1':[1,2,3],'a2':[3,4,5],'i':[7,10,11]})
Кадр данных 2:
b=pd.DataFrame({'b1':[5,6],'b2':[7,8],'i':[7,11]})
Если я сбрасываю индекс настолбцы 'i' , то есть список целых чисел , я могу достичь желаемого результата, как показано ниже:
код:
import pandas as pd
a=pd.DataFrame({'a1':[1,2,3],'a2':[3,4,5],'i':[7,10,11]})
b=pd.DataFrame({'b1':[5,6],'b2':[7,8],'i':[7,11]})
print('\na:\n',a,'\n\nb:\n',b)
new_a = a.set_index('i', drop=True)
new_b=b.set_index('i', drop=True)
print('\nnew_a:\n',new_a,'\n\nnew_b:\n',new_b)
c = pd.concat([new_a,new_b],axis=1)
print('\n\nc:\n',c,'\n')
вывод:
a:
a1 a2 i
0 1 3 7
1 2 4 10
2 3 5 11
b:
b1 b2 i
0 5 7 7
1 6 8 11
new_a:
a1 a2
i
7 1 3
10 2 4
11 3 5
new_b:
b1 b2
i
7 5 7
11 6 8
c:
a1 a2 b1 b2
i
7 1 3 5.0 7.0
10 2 4 NaN NaN
11 3 5 6.0 8.0
Однако, если я сбрасываю индекс на столбцы 'i' , то есть список строк , возникает ошибка, как показано ниже:
код:
import pandas as pd
a=pd.DataFrame({'a1':[1,2,3],'a2':[3,4,5],'i':['i7','i10','i11']})
b=pd.DataFrame({'b1':[5,6],'b2':[7,8],'i':['i7','i11']})
print('\na:\n',a,'\n\nb:\n',b)
new_a = a.set_index('i', drop=True)
new_b=b.set_index('i', drop=True)
print('\nnew_a:\n',new_a,'\n\nnew_b:\n',new_b)
c = pd.concat([new_a,new_b],axis=1)
print('\n\nc:\n',c,'\n')
вывод:
a:
a1 a2 i
0 1 3 i7
1 2 4 i10
2 3 5 i11
b:
b1 b2 i
0 5 7 i7
1 6 8 i11
new_a:
a1 a2
i
i7 1 3
i10 2 4
i11 3 5
new_b:
b1 b2
i
i7 5 7
i11 6 8
Traceback (most recent call last):
File "<ipython-input-266-6b35fe042e4a>", line 13, in <module>
c = pd.concat([new_a,new_b],axis=1)
File "C:\mypath\concat.py", line 225, in concat
copy=copy, sort=sort)
File "C:\Users\mypath\concat.py", line 378, in __init__
self.new_axes = self._get_new_axes()
File "C:\Users\mypath\concat.py", line 445, in _get_new_axes
new_axes[i] = self._get_comb_axis(i)
File "C:\Users\mypath\concat.py", line 470, in _get_comb_axis
.format(types=types))
TypeError: Cannot concatenate list of ['DataFrame', 'DataFrame']
Если кто-нибудь может помочь мне разобраться в чем проблема, я буду признателен.
Спасибо.