gpt4 book ai didi

python - pandas python 中的 VLOOKUP Excel 模拟

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:03 25 4
gpt4 key购买 nike

我有 2 个数据帧。

df1:

index ID City         Region 2City
1 23 Moscow Msk
2 34 Obninsk Msk Msk
3 56 Spb
4 17 Tula Spb

df2:

index City   Office
1 Msk Msk
2 Spb Spb
3 Tula Msk
4 Moscow Msk

我想得到以下 df:

index ID City         Region 2City Office
1 23 Moscow Msk Msk
2 34 Obninsk Msk Msk Msk
3 56 Spb Spb
4 17 Tula Spb Msk

所以它检查哪个'office'来自 df2 匹配 'City' , 'Region' , '2City'来自 df1。

如果我发现 'office'对于 'City' ,我停下来寻找。所以'City'列有优先权,然后是'Region' ,然后是'2City' .

我知道如何使用 3 for 来做到这一点,但我希望有更好的选择。

最佳答案

通常使用join(默认为左联接)或merge(其中必须指定how='left')。

在您的例子中,您正在尝试根据三列查找值。实现此目的的一种方法是使用 or 获取第一个非空值。

>>> (df1
.assign(temp = [region or two_city or city
for region, two_city, city in zip(df1.Region, df1['2City'], df1.City)])
.merge(df2, how='left', right_on='City', left_on='temp', suffixes=['', '_'])
.drop(['temp', 'City_'], axis=1))

ID City Region 2City Office
0 23 Moscow Msk None Msk
1 34 Obninsk Msk Msk Msk
2 56 None None Spb Spb
3 17 Tula Spb None Msk

关于python - pandas python 中的 VLOOKUP Excel 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299109/

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