当前位置: 首页 > 知识库问答 >
问题:

熊猫按条件顺序合并数据帧

龙玄天
2023-03-14

假设我有2个数据帧:

DF1:

Col1 | Col2 | Col3

XCN000370/17-18C|XCN0003711718C|0003971718

DF2

Col1 | Col2 | Col3

XCN0003711718C|XCN0003711718C|0003971718

我希望它们像这样合并:

  • 首次匹配Col1(DF1)和Col1(DF2)
  • 在保持不匹配的情况下,将Col1(DF1)与Col2(DF2)匹配。
  • 在剩余的不匹配项中,将Col1(DF1)与Col3(DF2)匹配

现在,通过交换DF1和DF2与剩余的不匹配项来重复此操作

  • 在剩余的不匹配项中,匹配Col1(DF2)和Col1(DF1)

有什么想法吗?

共有1个答案

冀子石
2023-03-14

我不认为有一行代码可以做到这一点。因此,请按照步骤操作。

1) 首先,创建一个列表:dfs=[]

2)合并数据框上的每个条件:dfs.append(pd.merge(df1,df2,left_on='col1',right_on='col1',how='外')). dropna()dfs.append(pd.merge(df1,df2,left_on=dfs.append(pd.merge(df1,df2,left_on=col1,right_on=col3,how=外)

^重复

3) 现在连接它们:pd。concat(dfs)

 类似资料:
  • 我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出:

  • 我有一个数据框架: 和一本参考词典: 我的目标是将所有出现的< code > replacement _ dict[' X1 ']替换为' X1 ',然后将这些行合并在一起。例如,“x1”、“x2”、“x3”或“x4”的任何实例都将被替换为“X1”等。 我可以通过选择包含任何这些字符串的行并将其替换为“X1”来实现这一点: 给予: 现在,如果我选择所有包含“X1”的行并将它们合并,我将得到: 因此

  • 问题内容: 我在加入熊猫方面遇到问题,并且试图找出问题所在。假设我有一个x: 我应该能够通过简单的连接命令在y = x上将y与索引上的y联接,除了同名具有+2。 我希望决赛对双方都有1941个非值。我也尝试过合并,但是我有同样的问题。 我以为正确的答案是pandas.concat([x,y]),但这也不符合我的预期。 编辑:如果您在加入方面遇到问题,请阅读下面的韦斯答案。我有一个重复的时间戳。 问

  • 我有一个非常大的 pyspark 数据帧和一个较小的熊猫数据帧,我读入如下: 这两个数据帧都包含标记为“A”和“B”的列。我想创建另一个 pyspark 数据帧,其中只有 df1 中的那些行,其中“A”和“B”列中的条目出现在 中同名的列中。也就是说,使用 df2 的列“A”和“B”过滤 df1。 通常我认为这将是一个连接(通过实现),但是如何将熊猫数据帧与 pyspark 数据帧连接起来? 我负

  • 我有两个数据帧DF1和DF2 DF1: DF2: 我想在DF1中创建一列“image1”,并根据以下条件赋值。 检查值是否在和DF2['documentType']=='Image'中可用 因此,输出应该如下所示: 不知道如何解决这个问题,但一些想法: -加入/合并是我的第一个想法,但是如何处理这些条件呢? -可能使用检查条件的功能映射/应用

  • 我有这种熊猫。数据框。“a”、“b”是获得“x”和“y”时的条件。 我需要绘制关于相同条件的(x,y)结肠的折线图。预期结果图为: 当然,这个图像是由以下代码手动给出的: 我的问题是,当获得一个包含条件列x和y的数据帧时,如何动态地绘制如上所述的图。 列名是固定的。但是,条件列的值是动态更改的。因此,我不能使用10、20、100、200的值。 如果我有下面的“用a和b过滤”方法,我认为问题解决了: