【发布时间】:2013-08-03 20:34:38
【问题描述】:
我正在尝试将 3 列从一个数据帧附加到另一个数据帧的末尾,类似于以下内容:
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 3 5
2 4 1 5 1 1
但我得到了:
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 仍然失败。
【问题讨论】:
-
如果 @user1827356 的解决方案不起作用,请使用 df1 和 df2 终端的整个输出更新您的问题,即包括它们的索引。
-
我展示的示例有效,但是我的(更大的)数据帧失败了。我将尝试发布一个失败的具体代表性案例。
-
@jzalger 原因可能是您的索引不匹配。正如安迪和 DSM 提到的那样使用 pd.concat([df1.reset_index(), df2[colsOfInterest].reset_index()], axis=1)