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
数据帧具有与每个business_id
相关联的city
我想要的结果是:
这将非常难说:
我想从withcity
数据框中查找与每个business_id
相关联的city
,并在nocity
中创建一个名为cityname
的新列,该列现在具有与该business_id
相关联的城市名称
我为什么放弃尝试来到这里
我知道这可以通过某种连接操作来实现。。但我不明白到底是哪一个。。我在网上查了一下,有点困惑,如果执行连接操作时两个数据帧中没有business_id
,会发生什么
例如:
withcity
有一些business_id
和一些city
值;当执行与nocity
的适当连接时,它不会找到特定的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)
我创建了一个字典,其中包含来自withcity
数据帧的business_id
和city
,并与nocity
数据帧进行了某种匹配比较
但是我的方法,可能会花很多时间,因为准确地说有470万条记录
IIUC^{}
一般来说,每当遇到这种情况时,您都希望考虑避免循环和迭代,而是执行合并。然后然后根据需要对数据进行处理。例如,温家宝的解决方案就是最恰当的方法
不过,我要补充几点。下面是我的两个DF:
让我们分别调用第一个和第二个dfs,nocity和withcity
你想做:
然而,如果你最终得到了文在上文中提到的nan值检查钥匙的数据类型
也就是说,如果nocity中的business\u id字段是int(出于某种原因),而withcity中的business\u id字段是str,那么Pandas在合并数据帧时会遇到问题,您会得到NaN值,而不是所需的城市名称
检查一下你会做什么
如果它们不同的话,你可以转换成一个普通的数据类型,比如str
希望这有帮助。如果你喜欢的话,也别忘了把你的名字从city改成cityname
相关问题 更多 >
编程相关推荐