pandas数据映射,更改列名,批量映射替换某列数据replace、map、apply、rename对比

关于数据关系映射的三个方法

首先,无论那一种方法,都建议先将映射关系写出来,然后使用方法时,可以直接调写好的关系表。

gys_name = {
    '深圳市腾讯计算机系统有限公司':'腾讯',
    '阿里巴巴(中国)有限公司':'淘宝',
    '北京百度网讯科技有限公司':'百度'
}
change_status = {
    '2':'已确认变更',
    '4':'待确认变更',
    '1':'无变更'
}
order_status = {
    1:'草稿',
    2:'待答交',
    6:'变更中',
    7:'已确认'
}
col_name = {
    '变更状态 1无变更 2已确认并更 3未确认变更 4待确认变更':'变更状态',
    '订单状态 1草稿2待答交3挂起4答交差异5退回6变更中7已确认8已完成':'订单状态'
}

第一种:使用replace()(推荐)

这个replace还有很多其他用法,根据条件进行映射。比如正则、字典、列表等

同时,还支持下面的一句话把所有的都替换了,并且,对于不符合的规则的,他不会去动。

df.replace({'供应商名称':gys_name,
            '变更状态':change_status,
            '订单状态':order_status}, inplace=True)

第二种:使用map()、apply()

这个函数,可以和lambda函数一块搭配使用效果惊人。

但是,map函数对于本文所示的映射,会对不符合规则的改写成NaN

df['供应商名称'] = df['供应商名称'].map(gys_name)
df['变更状态'] = df['变更状态'].map(change_status)
df['订单状态'] = df['订单状态'].map(order_status)

第三种:对于列名/行名索引进行更改rename()

默认变更列名,如果行名的话加上axis=0

df.rename(columns=col_name, inplace=True)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值