0
我必须处理大小约为15k到20K的数据框的列。我必须处理它的列“名”的,我已经叫df.apply优化列表和真正大字典键之间的交集
df['bew_col']=df.apply(lambda row: valuation_formula(row['persons_name']), axis=1)
def valuation_formula(name_str):
flag='UNMAPPED'
sr=name_str.split(' ')
f=list(set(sr).intersection(set(name_dict.keys())))
# print (f)
if len(f)>0:
flag=name_dict[str(f[0])]
# print flag
return flag
我name_dict是500万个键的字典。我该如何优化我的代码,以便在这个巨大的字典中使用键来返回相匹配的键的相应值,从而实现字符串列表的高效交集(这将是小的,因此不是担心的情况)?
我可以使用任何其他数据结构吗?
现在脚本需要20分钟才能运行。 df大小为10k,name_dict大小为300万。
谢谢您的回答,但我不能执行该语句name_series DF = [ 'persons_name'] str.partition(”“)[0]直接作为那么只有第一。这个字符串的名字将会被考虑(例如Oshin Sanjay Patwa),它将只映射为Oshin,而不是'Sanjay''Patwa',我想检查name_dict.keys()中字符串中所有单词的字符串,所以我可以在我的valuation_formula函数中使用map函数:f = list(set(sr).map(name_dict.keys())。谢谢你的建议! –
@Oshin Patwa,名字总是少于3? – Ian
@兰嗨,并不总是我吨变化,但是我是可以找到字符串的最大数量在这种情况下,从数据框的'名称'列将使用全部呢? –