如何基于CSV中的映射字典替换pandas DataFrame指定列的取值?
你可以直接用pandas内置的map()方法实现,全程不需要编写任何if判断,操作步骤非常简单:
第一步:将映射CSV转为字典
假设你的映射CSV有两列,分别存储行业名称(和主表PTOCCUPATIONALINDUSTRY列的取值完全对应)、对应的数字编码,先读取这个CSV并转为字典:
import pandas as pd # 读取映射表,替换为你自己的文件路径和实际列名 map_df = pd.read_csv("你的映射文件路径.csv") industry_map = dict(zip(map_df["行业名称列名"], map_df["数字编码列名"]))
第二步:直接替换主表的行业列
直接调用列的map()方法传入上面生成的字典即可:
# main_df是你现有的主数据DataFrame,直接替换对应列取值即可 main_df["PTOCCUPATIONALINDUSTRY"] = main_df["PTOCCUPATIONALINDUSTRY"].map(industry_map)
补充说明
如果存在部分行业名称没有匹配到映射的情况,默认会返回NaN,如果你希望保留原来的行业名称不替换,可以改成下面的写法:
main_df["PTOCCUPATIONALINDUSTRY"] = main_df["PTOCCUPATIONALINDUSTRY"].map(industry_map).fillna(main_df["PTOCCUPATIONALINDUSTRY"])
内容的提问来源于stack exchange,提问作者Sean Roudnitsky
相关产品推荐
相关产品推荐

