如何在Pandas数据框中从地址列提取州名生成新列?
Pandas提取地址中的州名并生成新列
首先注意你的州列表代码存在错误,List = [Imo, Lagos, Abia, Ebonyi, Rivers]里的州名是未定义变量,需要改成字符串列表:
states = ['Imo', 'Lagos', 'Abia', 'Ebonyi', 'Rivers']
不推荐使用iterrows(),它逐行遍历的效率极低,尤其在数据量大时。推荐以下两种更高效简洁的方法:
方法一:使用apply函数
定义提取州名的函数,通过apply批量处理每一行地址:
def get_state(address): for state in states: if state in address: return state return None # 无匹配州名时返回空值 df['state'] = df['Address'].apply(get_state)
方法二:使用正则表达式(更高效)
利用Pandas的字符串矢量化操作,通过正则匹配直接提取州名,速度远快于逐行遍历:
# 生成正则匹配模式,用|分隔所有州名 state_regex = '|'.join(states) # 提取第一个匹配到的州名 df['state'] = df['Address'].str.extract(f'({state_regex})', expand=False)
执行后你的数据框会新增state列,对应每行地址中的州名。
内容的提问来源于stack exchange,提问作者Engr. Chinwe
相关产品推荐
相关产品推荐

