我需要将索引为字符串的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],11]})
如果我将索引重置为'i'列(是整数列表),则可以达到预期的结果,如下所示:
代码:
import pandas as pd
a=pd.DataFrame({'a1':[1,11]})
b=pd.DataFrame({'b1':[5,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,'i':['i7','i10','i11']})
b=pd.DataFrame({'b1':[5,'i11']})
print('\na:\n','\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,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']
如果有人可以帮助我找出问题所在,我将不胜感激。
谢谢。