如何将变量值作为新列插入Pandas DataFrame
动态给pandas DataFrame新增邮编对应州列的实现方案
原有代码的问题点
- 取值阶段错误:
**st** = print(zipcode.state)为无效写法- 代码中的
**是Markdown加粗语法,直接写在Python代码里会触发语法报错 print()函数仅负责控制台输出内容,返回值为None,即便去掉**,变量st也无法存储到实际的州名,只会拿到空值
- 代码中的
- 传参阶段错误:
df2.assign(STATE = **st**)给assign方法传参不需要添加**这类额外标记,直接传入存好目标值的变量即可
正确实现代码
1. 正确查询邮编对应州并存入变量
from uszipcode import SearchEngine engine = SearchEngine() # 将ZIPCODE替换为实际使用的邮编值,例如佛罗里达的邮编33101 zip_info = engine.by_zipcode(ZIPCODE) # 直接读取state属性赋值,不要套print函数 st = zip_info.state
2. 动态传值新增STATE列
assign方法不会原地修改原DataFrame,需要用变量接收返回的新结果:
df2 = df2.assign(STATE = st)
补充提示:如果df2中每行对应不同邮编,需要批量匹配所有行的州信息,不要写循环逐行查询,建议先生成「邮编-州」的映射字典,再用pandas的
map方法批量赋值,执行效率会高很多。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

