我使用的是一个相当大的数据集,大约有3700万个数据点,这些数据点按层次分为三类:country、productcode和year。country变量(即countryname)是一个相当混乱的数据,由代表“Austral”的“Austral”等项组成。我构建了一个简单的guess_country(),它将字母与单词进行匹配,并从已知的国家名称列表中返回最佳猜测和置信区间。考虑到数据的长度和层次结构的性质,将.map()用于Series:country是非常低效的。[guess_country函数需要~2ms/请求]
我的问题是:有没有更高效的.map()来获取序列并只对唯一值执行映射?(考虑到有很多重复的国家名称)
对唯一的国家名称调用
guess_country()
,并创建一个country_map
系列对象,原始名称作为索引,转换后的名称作为值。然后可以使用country_map[df.country]
进行转换。在解决方案是利用数据帧中的分层索引!在
这很有效。。。通过替换数据索引级别[0]->;当国家/地区在索引中为0级时,则替换通过数据模型传播。在
没有,但是如果你只想应用于唯一值,那就自己去做。获取
mySeries.unique()
,然后使用函数为这些唯一值预先计算映射的替代项,并创建一个包含结果映射的字典。然后在字典中使用pandasmap
。这应该和你所期望的一样快。在相关问题 更多 >
编程相关推荐