我正在try 比较来自两个不同数据帧的两列,并使用python返回所有可能的匹配:(在EXCEL中有点像xlookup,但有多个可能的匹配)
请参阅下面的详细信息以了解样本数据帧和我try 的工作.
下面是对数据集的解释:马克没有任何汽车,然而,在他的名字下列出了几辆车,我们知道这些车都不属于他.我正在try 查看DataFrame 1(Marks),并将其与包含所有其他车主及其汽车的更 Big Data 集进行比较:DataFrame 2(Claimed),并返回Mark汽车的可能车主,如下所示.
Dataframe 1 : Marks
Marks = pd.DataFrame({'Car Brand': ['Jeep','Jeep','BMW','Volvo'],'Owner Name': ['Mark',
'Mark', 'Mark', 'Mark']})
Car Brand Owner Name
0 Jeep Mark
1 Jeep Mark
2 BMW Mark
3 Volvo Mark
数据帧2:已认领
数据帧2:已认领
claimed = pd.DataFrame({'Car Brand': ['Dodge', 'Jeep', 'BMW', 'Merc', 'Volvo', 'Jeep',
'Volvo'], 'Owner Name': ['Chris', 'Frank','Rob','Kelly','John','Chris','Kelly']})
Car Brand Owner Name
0 Dodge Chris
1 Jeep Frank
2 BMW Rob
3 Merc Kelly
4 Volvo John
5 Jeep Chris
6 Volvo Kelly
然而,这些数据确实有重复的汽车品牌名称,车主名称是唯一的-这意味着即使凯利被提到两次,她也是同一个人.克里斯也是如此..等等
我希望我的Mark‘s DataFrame有一个新的列,如下所示:
Car Brand Owner Name Possible Owners
0 Jeep Mark [Frank, Chris]
1 Jeep Mark [Frank, Chris]
2 BMW Mark Rob
3 Volvo Mark [John, Kelly]
我已经try 了以下代码:
possible_owners = list()
for cars in Marks['Car Brand']:
for car_brands in claimed['Car Brand']:
if Marks.loc[Marks['Car Brand'].isin(claimed['Car Brand'])]:
sub = list()
sub.append()
possible_owners.append(sub)
else:
not_found = 'No possible Owners Identified'
possible_owners.append(not_found)
#Then I will add possible_owners as a new column to Marks
error code:ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(),
a.item(), a.any() or a.all().
我也try 过合并,EXCEL xlookup,但(这有很多限制),我被困在试图理解如何返回可能的匹配,即使有多个,并将它们排在一行.
Question:如何比较这两个框架,从Owner Name列返回可能的值,并将这些值放入Marks表的新列中?
请原谅我的代码,我还是个新手.