Python 不同列的数据帧:AttributeError:';非类型';对象没有属性';is#U扩展名';

Python 不同列的数据帧:AttributeError:';非类型';对象没有属性';is#U扩展名';,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试连接两个沿0轴具有不同列名的数据帧。我在这里发现了一个类似的问题,但是这个解决方案不适用于我,因为我的两个数据帧的列名不相同。由于我的原始数据太大,无法在此处发布,以下示例应说明我正在尝试执行的操作: df1 = pd.DataFrame(np.random.randint(0,100,size=(1, 4)), columns=list('ABCD')) df2 = pd.DataFrame(np.random.randint(0,100,size=(1, 4)), columns=

我正在尝试连接两个沿0轴具有不同列名的数据帧。我在这里发现了一个类似的问题,但是这个解决方案不适用于我,因为我的两个数据帧的列名不相同。由于我的原始数据太大,无法在此处发布,以下示例应说明我正在尝试执行的操作:

df1 = pd.DataFrame(np.random.randint(0,100,size=(1, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.randint(0,100,size=(1, 4)), columns=list('EFGH'))

#df1
    A   B   C   D
0   26  39  7   44

#df2
    E   F   G   H
0   12  44  26  64

pd.concat([df1,df2],axis=0).reset_index(drop=True)
# desired output looks like this
A   B   C   D   E   F   G   H
0   26.0    39.0    7.0 44.0    NaN NaN NaN NaN
1   NaN NaN NaN NaN 12.0    44.0    26.0    64.0
上面的代码工作得很好。然而,一旦我使用上面完全相同的语法为df1和df2输入了自己的数据帧,我就会得到一个错误

# my real dfs are called data1 & data2, I tried setting ignore_index=True and ignore_index=False
pd.concat([data1, data2],axis=0, ignore_index=True)
导致以下错误:

错误:

 ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-194-dbee1fd0bdea> in <module>
    ----> 1 pd.concat([data1, data2],axis=0, ignore_index=True)

    ~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\pandas\core\reshape\concat.py in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, sort, copy)
        224                        verify_integrity=verify_integrity,
        225                        copy=copy, sort=sort)
    --> 226     return op.get_result()
        227 
        228 

    ~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\pandas\core\reshape\concat.py in get_result(self)
        421             new_data = concatenate_block_managers(
        422                 mgrs_indexers, self.new_axes, concat_axis=self.axis,
    --> 423                 copy=self.copy)
        424             if not self.copy:
        425                 new_data._consolidate_inplace()

    ~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\pandas\core\internals.py in concatenate_block_managers(mgrs_indexers, axes, concat_axis, copy)
       5414                 values = values.view()
       5415             b = b.make_block_same_class(values, placement=placement)
    -> 5416         elif is_uniform_join_units(join_units):
       5417             b = join_units[0].block.concat_same_type(
       5418                 [ju.block for ju in join_units], placement=placement)

    ~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\pandas\core\internals.py in is_uniform_join_units(join_units)
       5438         # no blocks that would get missing values (can lead to type upcasts)
       5439         # unless we're an extension dtype.
    -> 5440         all(not ju.is_na or ju.block.is_extension for ju in join_units) and
       5441         # no blocks with indexers (as then the dimensions do not fit)
       5442         all(not ju.indexers for ju in join_units) and

    ~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\pandas\core\internals.py in <genexpr>(.0)
       5438         # no blocks that would get missing values (can lead to type upcasts)
       5439         # unless we're an extension dtype.
    -> 5440         all(not ju.is_na or ju.block.is_extension for ju in join_units) and
       5441         # no blocks with indexers (as then the dimensions do not fit)
       5442         all(not ju.indexers for ju in join_units) and

    AttributeError: 'NoneType' object has no attribute 'is_extension'
但是,我仍然收到相同的错误消息

我正在使用的两个数据帧非常大,因此很遗憾,我不能在这里发布整个示例。我的两个数据帧的内容都是整数、浮点数和字符串,所以这里没有任何可能导致错误的奇怪情况。你知道是什么导致了这个错误,或者我可以检查什么来缩小问题的范围吗


多谢各位

原来问题只是在我的一个数据帧中出现了重复的列名。消除重复的列名解决了问题。上面的代码现在工作得完美无缺。

原来问题只是在我的一个数据帧中出现了重复的列名。消除重复的列名解决了问题。上面的代码现在工作得完美无缺。

我在添加两个数据帧时遇到了相同的错误
AttributeError:“NoneType”对象没有属性“is_extension”
。这是因为我在添加列名之前更改了其中一个列名,错误地添加了两次
[]

例如:

df.columns = [["A","B"]]

我在附加两个数据帧时遇到了相同的错误
AttributeError:'NoneType'对象没有属性'is_extension'
。这是因为我在添加列名之前更改了其中一个列名,错误地添加了两次
[]

例如:

df.columns = [["A","B"]]

你能解释一下扩展名是什么吗?这是一个列名吗?嗨@Efran,这不是我写的。从错误消息输出判断,它似乎位于pandas core(“AppData\Local\Continuum\anaconda3\envs\tensorflow gpu\lib\site packages\pandas\core\internals.py”)内。您的pandas版本是什么?我的版本是“0.23.4”。抱歉,如果我造成了一些混乱:我上面的小代码示例也适用于我,但是问题是,一旦我使用真实数据,它就会中断。因此,我想这一定与我的数据有关。我希望错误消息能说明我的数据可能有什么问题……但我无法解释它。你能解释一下扩展名是什么吗?这是一个列名吗?嗨@Efran,这不是我写的。从错误消息输出判断,它似乎位于pandas core(“AppData\Local\Continuum\anaconda3\envs\tensorflow gpu\lib\site packages\pandas\core\internals.py”)内。您的pandas版本是什么?我的版本是“0.23.4”。抱歉,如果我造成了一些混乱:我上面的小代码示例也适用于我,但是问题是,一旦我使用真实数据,它就会中断。因此,我想这一定与我的数据有关。我希望这个错误信息能说明我的数据可能有什么问题……但我无法解释它。