通过比较具有多个条件的两个数据帧来获取特定的行值

Get a specific row value by comparasion of two dataFrames with multiple conditions

==============

我有一个第一个 DataFrame df1,它看起来像这样:

Name Location
Bob Paris
Bob Berlin
Alice Paris
Alice Miami
Toto NYC
Bob NYC
Mark Berlin
Joe Paris
... ...

然后我有第二个 DataFrame df2 看起来也像这样:

Name Location Value
Alice Paris 0.3
Bob Paris 0.2
Bob Berlin 0.4
Alice Miami 0.1
Lucas NYC 0.0
... ... ...

我想创建一个函数 searchedValue(),它在新列 ["SEARCHEDVALUE"] 中实现我的 df1 的每一行,并在这两个条件下使用相应的 df2["VALUE"]

通过检查 df1["NAME"] 是否在 df2 and 如果 df1["LOCATION"] 在我的 df2 中,那么 return df2 VALUE 对应于匹配行...否则return 找不到匹配项

我知道我可以使用类似这样的东西来实现我的专栏:

df1["SearchedValue"] = df2.apply(searchedValue)

但我还没有找到构建我的函数的解决方案。

感谢您的帮助

数据:

df = pd.DataFrame({'Name': {0: 'Bob', 1: 'Bob', 2: 'Alice', 3: 'Alice', 4: 'Toto'},
 'Location': {0: 'Paris', 1: 'Berlin', 2: 'Paris', 3: 'Miami', 4: 'NYC'}})

df:

    Name Location
0    Bob    Paris
1    Bob   Berlin
2  Alice    Paris
3  Alice    Miami
4   Toto      NYC
df2 = pd.DataFrame({'Name': {0: 'Bob', 1: 'Bob', 2: 'Alice', 3: 'Alice', 4: 'Lucas'},
 'Location': {0: 'Paris', 1: 'Berlin', 2: 'Paris', 3: 'Miami', 4: 'NYC'},
 'Value': {0: 0.3, 1: 0.2, 2: 0.4, 3: 0.1, 4: 0.0}})

df2:

    Name Location  Value
0    Bob    Paris    0.3
1    Bob   Berlin    0.2
2  Alice    Paris    0.4
3  Alice    Miami    0.1
4  Lucas      NYC    0.0
def searchedValue(Name, Location):
    merged = df.merge(df2, on=["Name", "Location"])
    result = merged[(merged.Name == Name) & (merged.Location == Location)]
    if not result.size:
        return "No match found"
    return f"The Value is: {result['Value'].iloc[0]}"
print(searchedValue("Alice", "Paris"))
print(searchedValue("Alice", "Miami"))
print(searchedValue("Alice", "NOOOOOOOOO"))
The Value is: 0.4
The Value is: 0.1
No match found