我正在尝试从以下两个csv文件中连接 Dataframe :
df_a: https://www.dropbox.com/s/slcu7o7yyottujl/df_current.csv?dl=0
df_b: https://www.dropbox.com/s/laveuldraurdpu1/df_climatology.csv?dl=0
字符串
这两个字段都有相同的数据行数目和名称。不过,当我这样做时:
pandas.concat([df_a, df_b])
型
我得到的错误:
AssertionError: Number of manager items must equal union of block items
# manager items: 20, # tot_items: 21
型
如何解决这个问题?
4条答案
按热度按时间ttygqcqt1#
我认为,如果满足以下两个条件,则会发生此错误:
(df1.columns == df2.columns)
是False
1.列具有重复值。
基本上,如果你
concat
嵌套了[A,B,C]
和[B,C,D]
列,它可以为每个不同的列名创建一个系列。所以,如果我尝试加入第三个嵌套[B,B,C]
,它不知道要追加哪一列,并且最终的不同列比它认为需要的要少。如果你的数组是
df1.columns == df2.columns
,那么它无论如何都会工作。所以你可以将[B,B,C]
连接到[B,B,C]
,但不能连接到[C,B,B]
,因为如果列是相同的,它可能只是使用整数索引或其他东西。rt4zxlrg2#
这里的答案没有解决我的问题,但这个答案解决了。
问题在一个或两个DataFrame中重复列。
下面是一个重复的列修复(根据上面的答案):
字符串
m1m5dgzv3#
您可以通过“手动”连接来解决这个问题,在本例中,
字符串
而不是逃跑
型
您可以使用将所有的数据框转换为字典列表,然后从这些列表中创建一个新的数据框(与chain合并)
型
ifmq2ha24#
不幸的是,源文件已经不可用,所以我不能检查我的解决方案在你的情况下.在我的情况下,错误发生时:
1.数据框有两个同名的列(我有
ID
和id
列,然后我将其转换为小写,因此它们变得相同)1.同名列的值类型不同
下面是一个例子,它给我的错误问题:
字符串
删除/重命名其中一个列可以使此代码正常工作。