我正在使用邮政编码表为choroplot制作县表。当我给它一个小玩具示例时,我的代码工作正常,但当我给它数据帧时,它会挂断。我无法共享数据框,但它是+/- 70,000个邮政编码,编码为字符串,值可以是正确的邮政编码,非数字字符串或不是正确的邮政编码的数字字符串,每个字符串格式。这是代码:
# import libraries
import numpy as np
import pandas as pd
# load customer email table
df = pd.read_csv('customer_April2018.csv', encoding='latin-1')
# load zip code table
zc = pd.read_csv('us_postal_codes.csv', encoding='latin-1')
def zip_toCounty(zip):
for i, row in zc.iterrows():
try:
if int(zip) == zc['ZipCode'].loc[i] : return zc['County'].loc[i]
except ValueError : return 'No County'
return 'No County'
g = lambda s : zip_toCounty(s)
df['County']=df['ZipCode'].apply(g)
df.to_csv('join_test.csv',index=False)
我没有收到错误,但估计完成时间超过40小时,考虑到数据的大小,这是完全不合理的。我必须使用错误的东西,我怎样才能加快处理速度?一个人建议使用哈希函数,这是最好的选择吗?
答案 0 :(得分:1)
你可以完全没有循环和函数,只需合并ZipCode列上的数据集:
new_df = pd.merge(df, zc, how="left", left_on="ZipCode", right_on="ZipCode")