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数据帧中的withcitynocity,并与数据帧进行某种匹配比较。

但是我的方法可能要花很多时间,因为要准确记录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/

10-11 00:00