nocity.head()
user_id business_id stars
0 cjpdDjZyprfyDG3RlkVG3w uYHaNptLzDLoV_JZ_MuzUA 5
1 bjTcT8Ty4cJZhEOEo01FGA uYHaNptLzDLoV_JZ_MuzUA 3
2 AXgRULmWcME7J6Ix3I--ww uYHaNptLzDLoV_JZ_MuzUA 3
3 oU2SSOmsp_A8JYI7Z2JJ5w uYHaNptLzDLoV_JZ_MuzUA 4
4 0xtbPEna2Kei11vsU-U2Mw uYHaNptLzDLoV_JZ_MuzUA 5
withcity.head()
business_id city
0 YDf95gJZaq05wvo7hTQbbQ Richmond Heights
1 mLwM-h2YhXl2NCgdS84_Bw Charlotte
2 v2WhjAB3PIBA8J8VxG3wEg Toronto
3 CVtCbSB1zUcUWg-9TNGTuQ Scottsdale
4 duHFBe87uNSXImQmvBh87Q Phoenix
nocity
数据帧具有business_id
,(它们可能会重复,因为它也具有每个user_id
对每个business_id
给出的评级)withcity
数据帧具有与每个city
相关联的business_id
我想要的结果是:
这将是很难说的:
我想从
city
数据框中查找与每个business_id
关联的withcity
,并在nocity
中创建一个名为cityname
的新列,该列现在具有与该business_id
关联的城市名称为什么我放弃尝试来到这里
我知道这可以通过某种联接操作来执行。。但是我不确切知道哪个。.我在网上查询了一下,如果在
business_id
中没有某些withcity
会发生什么,我会感到有些困惑。执行联接操作时的两个数据帧?例如:
business_id
具有一些city
且具有某些nocity
值;并且在与business_id
进行任何适当的连接时,都找不到该特定的business_id
所以我来这里寻求帮助。
我尝试了什么其他选择?
area_dict = dict(zip(withcity.business_id, withcity.city))
emptylist = []
for rows in nocity['business_id']:
for key, value in area_dict.items():
if(key == rows):
emptylist.append(value)
我创建了一个字典,用于保存
city
数据帧中的withcity
和nocity
,并与数据帧进行某种匹配比较。但是我的方法可能要花很多时间,因为要准确记录470万条记录。
最佳答案
IIUC merge
nocity.merge(withcity,on='business_id',how='left')
Out[855]:
user_id business_id stars city
0 cjpdDjZyprfyDG3RlkVG3w uYHaNptLzDLoV_JZ_MuzUA 5 NaN
1 bjTcT8Ty4cJZhEOEo01FGA uYHaNptLzDLoV_JZ_MuzUA 3 NaN
2 AXgRULmWcME7J6Ix3I--ww uYHaNptLzDLoV_JZ_MuzUA 3 NaN
3 oU2SSOmsp_A8JYI7Z2JJ5w uYHaNptLzDLoV_JZ_MuzUA 4 NaN
4 0xtbPEna2Kei11vsU-U2Mw uYHaNptLzDLoV_JZ_MuzUA 5 NaN
关于python - 在两个 Pandas DataFrame之间执行适当的联接操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47560231/