gpt4 book ai didi

python - 相当于 SQL 不存在子查询的 Pandas

转载 作者:行者123 更新时间:2023-11-28 18:06:38 26 4
gpt4 key购买 nike

我正在尝试从 Pandas 表中删除某些行。它本质上是一个重复数据删除练习:

我有一张 table

           id          sub_id1       sub_id2              date       
0 1 424755 101 2018-09-21
1 2 424755 101 2018-09-21
2 3 424755 102 2018-09-21
3 4 678321 101 2018-09-21
4 5 678321 102 2018-09-22
5 6 424755 102 2018-09-22

如果有另一行与 sub_id1date 匹配,但具有较低的 sub_id2,我想删除一行。

我为此编写的 SQL 是

select * from table t
where not exists (select 1 from table
where sub_id1=t.sub_id1
and date=t.date
and sub_id2<t.sub_id2)

结果表将是

           id          sub_id1       sub_id2              date       
0 1 424755 101 2018-09-21
1 2 424755 101 2018-09-21
2 4 678321 101 2018-09-21
3 5 678321 102 2018-09-22
4 6 424755 102 2018-09-22

id=3 被删除是因为有些行具有与它完全相同的 sub_id1 和日期列,但 sub_id2.

尝试使用 Pandas 合并来解决这个问题。谢谢!

最佳答案

这更像是一个 groupby问题 + min值切片(我在这里使用 transform min)

s=df.groupby(['sub_id1','date']).sub_id2.transform('min')
df[df.sub_id2==s]
Out[146]:
id sub_id1 sub_id2 date
0 1 424755 101 2018-09-21
1 2 424755 101 2018-09-21
3 4 678321 101 2018-09-21
4 5 678321 102 2018-09-22
5 6 424755 102 2018-09-22

where sub_id1=t.sub_id1 and date=t.date : df.groupby(['sub_id1','date'])

sub_id2<t.sub_id2 : df.sub_id2==s

关于python - 相当于 SQL 不存在子查询的 Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com