级联熊猫DataFrames并不如预期

问题描述:

我试图从一个数据帧追加3列的另一端部,类似于以下:级联熊猫DataFrames并不如预期

df1: 
    a b c d 
    1 1 4 1 
    2 4 1 5 

    df2[colsOfInterest]: 
    e f 
    3 5 
    1 1 

使用newDF = pd.concat([DF1,DF2 [colsOfInterest ]])

我期待:

​​

但我得到:

a b c d e f 
    1 1 4 1 NA NA 
    2 4 1 5 NA NA 
    NA NA NA NA 3 5 
    NA NA NA NA 1 1 

更新: 虽然我不能发布我的数据帧,但我似乎已经缩小到数据类型或一致性。如果我使用to_csv将两个df写入一个文件,然后使用read_csv将它们读回到新文件中,则concat过程可以正常工作。

其中一个是完全对象类型,另一个是float64。

当重读它们时,它们变成了float64,int64,object的混合。 如果我尝试使用.astype(str).convert_numeric将它们转换为数字类型,则类型与读取版本匹配,但是concat仍会失败。

+0

如果@ user1827356的解决方案是行不通的,请与DF1的终端和DF2即包括其索引整个输出更新你的问题。 –

+0

我展示的例子工作,但是我的(大得多)dataFrames失败。我会尝试发布一个失败的具体代表性案例。 – taylormade201

+0

@jzalger原因可能是你的索引不匹配。正如Andy和DSM提到的,使用pd.concat([df1.reset_index(),df2 [colsOfInterest] .reset_index()],axis = 1) – user1827356

这应该工作

pd.concat([df1, df2[colsOfInterest]], axis=1) 
+0

所有这些似乎都是反转连续命令(即: NA NA NA NA 3 5 而不是 1 1 4 1不适用不适用 – taylormade201

+0

@jzalger如果索引存在问题,可以通过ignore_index = True。 –

+0

@AndyHayden:我发现我必须显式地'reset_index()' - '' ignore_index'没有做我认为的事情。 – DSM