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

编辑:Pyspark:基于另一个数据帧删除行,该数据帧具有许多列的条件

法池暝
2023-03-14

我有两个数据帧df1和df2。我想根据df2列值过滤或删除df1上的行

df2,我必须检查客户名称、产品、年份、数量和金额,然后如果df1的所有值都相同,我必须放弃。(即,如果customername = Gopi,product = ball,year = 2020,qty = 0和amount,则删除

请让我知道如何实现,谢谢。

DF1:

customername     product      year    qty     amount
Gopi             ball         2020    0       -100
Hana             ball         2020    2        200
Gopi             toy          2019    10       1000
Mesh             toy          2020    2        200
Tiby             ball         2017    1        100
Mona             pen          2020    1         70
Hana             ball         2019    2        200
Mona             ball         2020    1         70
Mona             toy          2020    1         70
Tiby             toy          2020    1        100

df2:

customername     product      year    qty     amount
Gopi             ball         2020    0       -100
Mona             pen          2020    1         70

预期产出:

customername     product      year    qty     amount
Hana             ball         2020    2        200
Gopi             toy          2019    10       1000
Mesh             toy          2020    2        200
Tiby             ball         2017    1        100
Hana             ball         2019    2        200
Mona             ball         2020    1         70
Mona             toy          2020    1         70
Tiby             toy          2020    1        100

共有1个答案

冷吉星
2023-03-14

我设法过滤如下。

final_df = df1.join(df2, ((df1.customername == df2.customername) & (df1.product == df2.product) & (df1.year == df2.year) & (df1.qty == df2.qty) & (df1.amount <= 0), how='left_anti'))

谢了。

 类似资料:
  • 我有两个数据帧df1和df2。df1就像一个具有以下值的字典 df2具有以下值: 我想基于df1数据帧中的,将df2拆分为3个新的数据帧。 日期,TLRA_权益栏应位于数据框 预期产出: > 数据帧 消费者,非周期性数据帧 请让我知道如何有效地做。我想做的是连接列名,例如,然后根据列名的前半部分分割数据帧。 代码: 但这很复杂。需要更好的解决方案。

  • 我有两个数据帧df1和df2 df1如下 df2就像 我想根据df2中与df1中的列名匹配的单元格值将值从df1复制到df2,所以我的df3应该看起来像 df3 基本上,我想根据df2的单元格值(df1中的列名)从df1复制df2中的列 如果它仍然令人困惑,请告诉我

  • 我正面临这个问题,其中我有一个数据帧,比如: 和另一个数据帧: 现在我想要的是,将df2的列插入到df1的特定位置,这样df1就变成了(实际上一个新的df也会起作用): 我现在通过创建一个新的空df来实现这一点,然后迭代这两个df的列,然后依次添加每一列。这是低效的、丑陋的,并且违背了数据流的全部目的。所以我很想知道,这个已经有方法了吗?我不确定这样的问题是否已经在这里得到了回答,但我肯定我没有找

  • 我有两个数据帧,其中一列名为。数据帧是从两名参与者同时录制的两个视频中提取的数据。由于跟踪失败,数据缺少一些帧(每个视频不同)。我想根据帧整数值取一个交点。 这里发布了一个类似的问题:熊猫——基于列条目的两个数据帧的交集,但接受的答案是连接,而不是交集。 已删除的行不在和 (我可以重置索引后,我完成处理) 我想首先得到两个数据帧的帧列的交集: 错误: 在获得两个数据帧中的帧索引后,我考虑执行以下操

  • 我有一个这样的数据帧(): 我想基本上删除重复记录,以便字段是唯一的。我不关心被丢弃的记录,在这种情况下,地址已经被删除,所以唯一通过的是拼写错误。我想要以下结果的数据框: 在R中,基本上是这样做的: 但是我需要一种方法在熊猫身上做到这一点。

  • 我有以下数据帧: 我需要删除等于的行。最有效的方法是什么?