当前位置: 首页 > 面试题库 >

pandas合并具有不同列的两个数据框

景唯
2023-03-14
问题内容

我肯定在这里错过了一些简单的事情。尝试在熊猫中合并具有相同列名的两个数据框,但右侧的数据框具有一些左侧没有的列,反之亦然。

>df_may

  id  quantity  attr_1  attr_2
0  1        20       0       1
1  2        23       1       1
2  3        19       1       1
3  4        19       0       0

>df_jun

  id  quantity  attr_1  attr_3
0  5         8       1       0
1  6        13       0       1
2  7        20       1       1
3  8        25       1       1

我试着加入外部联接:

mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer")

但这产生了:

Left data columns not unique: Index([....

我还指定了一个要连接的单列(例如on =“ id”),但是它复制了除“
id”以外的所有列,例如attr_1_x,attr_1_y,这并不理想。我也将整个列列表(有很多)传递给了“ on”:

mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer", on=list(df_may.columns.values))

产生:

ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

我想念什么?我想获得一个带有所有行附加的df,并在可能的情况下填充attr_1,attr_2,attr_3,而不显示它们的NaN。这似乎是用于数据处理的非常典型的工作流程,但我遇到了麻烦。

提前致谢。


问题答案:

我认为在这种情况下concat,您想要的是:

In [12]:

pd.concat([df,df1], axis=0, ignore_index=True)
Out[12]:
   attr_1  attr_2  attr_3  id  quantity
0       0       1     NaN   1        20
1       1       1     NaN   2        23
2       1       1     NaN   3        19
3       0       0     NaN   4        19
4       1     NaN       0   5         8
5       0     NaN       1   6        13
6       1     NaN       1   7        20
7       1     NaN       1   8        25

通过传递axis=0,您将df堆叠在一起,我相信这是您想要的,然后NaN在它们各自的df所没有的地方产生价值。



 类似资料:
  • 问题内容: 我有两个表(表A和表B)。 它们具有不同的列数-假设表A具有更多列。 如何合并这两个表,并为表B没有的列获取空值? 问题答案: 为具有较少列的表添加额外的列作为null

  • 我肯定错过了一些简单的东西。尝试合并熊猫中的两个数据帧,它们的列名基本相同,但右边的数据帧有一些左边没有的列,反之亦然。 我已尝试使用外部联接进行联接: 但这会产生: 我还指定了一个要连接的列(例如,on="id"),但这会重复所有列,除了"id",如attr_1_x、attr_1_y,这并不理想。我还传递了整个列列表(有很多)到on: 其产生: 我错过了什么?我想得到一个附加了所有行的df,并且

  • 我有两个不同的DataFrames,我想合并与和列。我看到有一些线程,但我找不到我的问题的解决方案。我也读了这份文件,并尝试了不同的组合,但是,不工作得很好。 我的两个不同数据帧的示例, 正如您在两个数据帧中看到的,以开始,我想加入,这基本上是匹配的日期和时间。到目前为止,我使用前面的线程和上面提到的文档尝试了许多不同的组合。例如,, 这是右DataFrame的值。我知道,我不必同时使用和列,但是

  • 问题内容: 我有2个数据框: restaurant_ids_dataframe 和 restaurant_review_frame 我想使用熊猫中的DataFrame.join()命令将这两个DataFrame加入一个单一的数据框中。 我尝试了以下代码行: 但是,当我尝试这样做时,出现以下错误: 我对熊猫很陌生,不知道就执行join语句而言我在做什么错。 任何帮助将非常感激。 问题答案: 您可以使

  • 问题内容: 我可以在其他具有相同列名的数据框的右边追加一个数据框吗 问题答案: 您可以像这样连接两个数据框。 如果您正在寻找联盟,则可以执行以下操作。 Spark 2.0,已重命名为

  • 问题内容: 我正在使用下面的代码合并两个csv(数据帧): 我有以下CSV文件 文件1: 文件2: 合并后 如果您注意到student_id的开头附加了0,应该将其视为文本,但是在合并并使用函数后,它将其转换为数字并删除了前导0。 即使在to_csv之后,如何将列保持为“文本”? 我认为它的to_csv函数可以再次保存为数字添加了dtype = {‘student_id’:str}。 问题答案: