【发布时间】:2017-08-15 20:08:48
【问题描述】:
我正在尝试连接两个 DataFrame 并收到 'TypeError: cannot concatenate a non-NDFrame object' 错误。我一直在环顾四周,有很多人遇到这个错误,大多数时候他们尝试做的不是他们的代码真正做的事情,(所以答案解决了他们特定但不相关的问题)
我的问题不是要解决我的特定问题,而是要了解错误... 什么是非 NDFrame 对象?为什么不能串联?
另外,为什么这与 NDFrames 有关(它们是什么,我在哪里使用它们?所有 DataFrames 都是 NDFrames 吗?是否有任何 NDFrames 不是 DataFrames?)...
如果它说 'TypeError: cannot concatenate a non-DataFrame object' 我会理解(尽管我不确定它们不是 DataFrames 是否是我的错误的原因)这主要是我的好奇心,我不想寻找任何特定的错误...
【问题讨论】:
-
这可能意味着您正在尝试连接一堆
Series,NDFrame 表示 N 维,因此至少 2-D 一个系列是 1-D,这里的问题是您重新尝试连接和对齐索引和列名。一个系列有一个索引但没有列名(有一个名称属性但这不一样),它可以工作但实现不支持这个 -
或者你正在传递一些类型不是 ND-Frame 的东西,例如一个 numpy 数组,实际上连接一个 pandas Series 列表将起作用。您需要发布原始数据和代码来展示您正在尝试的内容
-
我很尴尬我修复了代码,现在似乎无法重现我的错误,所以很可能是你写的……我的问题不是关于我的错误,而是什么是 NDFrame 对象......在stackoverflow中似乎没有问题。在我看来,DataFrame 是一个 NDFrame(?)谷歌搜索我得到“pandas.core.generic.NDFrame 是 DataFrame 的 N 维类似物,它将多维存储在一个大小可变、标记的数据结构中”,但会想对它做什么、不是做什么以及它与 DataFrame 的关系有一个更充实的解释......
-
把它想象成N维数组,没有比这更复杂的了
-
对于在搜索结果中找到此页面的其他人,如果您在将数据帧列表的变量名称传递给 pd.concat 后收到此错误,请仔细检查您是否没有用括号括住该变量名(这将创建一个列表列表,它是一个非 NDFrame 对象)
标签: python pandas dataframe concatenation