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
@蘭嗨,並不總是我噸變化,但是我是可以找到字符串的最大數量在這種情況下,從數據框的'名稱'列將使用全部呢? –