gpt4 book ai didi

python - Pandas 左外连接多个列上的多个数据框

转载 作者:IT老高 更新时间:2023-10-28 20:29:44 26 4
gpt4 key购买 nike

我是使用 DataFrame 的新手,我想知道如何在一系列表的多个列上执行相当于左外连接的 SQL

例子:

df1: 
Year Week Colour Val1
2014 A Red 50
2014 B Red 60
2014 B Black 70
2014 C Red 10
2014 D Green 20

df2:
Year Week Colour Val2
2014 A Black 30
2014 B Black 100
2014 C Green 50
2014 C Red 20
2014 D Red 40

df3:
Year Week Colour Val3
2013 B Red 60
2013 C Black 80
2013 B Black 10
2013 D Green 20
2013 D Red 50

基本上我想做这样的 SQL 代码(注意 df3 没有加入 Year):

SELECT df1.*, df2.Val2, df3.Val3
FROM df1
LEFT OUTER JOIN df2
ON df1.Year = df2.Year
AND df1.Week = df2.Week
AND df1.Colour = df2.Colour
LEFT OUTER JOIN df3
ON df1.Week = df3.Week
AND df1.Colour = df3.Colour

结果应该是这样的:

Year    Week    Colour    Val1    Val2    Val3
2014 A Red 50 Null Null
2014 B Red 60 Null 60
2014 B Black 70 100 Null
2014 C Red 10 20 Null
2014 D Green 20 Null Null

我尝试过使用合并和连接,但不知道如何在多个表上以及何时涉及多个关节。有人可以帮我解决这个问题吗?

谢谢

最佳答案

分两步合并它们,首先是df1df2,然后是合并结果到df3

In [33]: s1 = pd.merge(df1, df2, how='left', on=['Year', 'Week', 'Colour'])

我从 df3 中删除了年份,因为您在最后一次加入时不需要它。

In [39]: df = pd.merge(s1, df3[['Week', 'Colour', 'Val3']],
how='left', on=['Week', 'Colour'])

In [40]: df
Out[40]:
Year Week Colour Val1 Val2 Val3
0 2014 A Red 50 NaN NaN
1 2014 B Red 60 NaN 60
2 2014 B Black 70 100 10
3 2014 C Red 10 20 NaN
4 2014 D Green 20 NaN 20

[5 rows x 6 columns]

关于python - Pandas 左外连接多个列上的多个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21786490/

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