关于数据关系映射的三个方法
首先,无论那一种方法,都建议先将映射关系写出来,然后使用方法时,可以直接调写好的关系表。
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)