gpt4 book ai didi

python - pandas 中的 SQL 风格条件连接

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:47 26 4
gpt4 key购买 nike

我有 2 个 dfs,如下所示

df1:

ID  year  notes  score
12 2015 text 15.1
54 2014 text 18.4

df2:

id_num  year  score
12 2015 15.1
12 2014 12.9
54 2014 18.4

我正在尝试使用 df1 中的所有数据以及 df 中的分数列创建一个新的 df,其中 df1.year = df2.year+1。像这样:

ID  year   notes  score  prior_yr_score
12 2015 text 15.1 12.9

我正在阅读 pandas 文档,但没有找到执行这种类型的条件连接的方法。在 sql 中我可以这样做

select a.*, b.score as prior_yr_score
from df1 as a left join df2 as b
on a.ID=b.id_num and a.year = b.year+1

而在 python 中我陷入了

merged=pd.merge(df1, df2, how='left',left_on='ID',right_on='id_num')

如何在单个语句中执行此操作(pd.merge 或其他)?

编辑:我已经阅读了一些有关 python 中 sql 样式连接的其他帖子和文档,但未能找到明确的答案。例如,this post看起来很相似,但在答案中,OP实际上是在尝试按条件组计算聚合度量,而不是用条件连接 2 个 dfs。

最佳答案

In [92]: d1.merge(d2.assign(year=d2.year+1, prior_yr_score=d2.score).drop('score',1), left_on=['ID','year'], right_on=['id_num','year'])
Out[92]:
ID year notes score id_num prior_yr_score
0 12 2015 text 15.1 12 12.9

关于python - pandas 中的 SQL 风格条件连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578755/

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