N104_pandas处理身份证号数据,获得对应省份籍贯、生日和性别

Python与pandas助力数据分析
import pandas as pd 
import numpy as np
def idtoarea(idnum):
    idnum=idnum['身份证']
    if len(idnum)!=18:#检查身份证码是否合法,因为有一些台胞证之类的
        return [np.nan*3]
    area=int(idnum[:6])
    birth=int(idnum[6:14])
    sex=int(idnum[16:17])
    area=idinfo.loc[area]
    area=area[0]
    return area
def idtobirth(idnum):
    idnum=idnum['身份证']
    if len(idnum)!=18:#检查身份证码是否合法,因为有一些台胞证之类的
        return [np.nan*3]
    area=int(idnum[:6])
    birth=int(idnum[6:14])
    sex=int(idnum[16:17])
    area=idinfo.loc[area]
    area=area[0]
    return birth
def idtosex(idnum):
    idnum=idnum['身份证']
    if len(idnum)!=18:#检查身份证码是否合法,因为有一些台胞证之类的
        return [np.nan*3]
    area=int(idnum[:6])
    birth=int(idnum[6:14])
    sex=int(idnum[16:17])
    area=idinfo.loc[area]
    area=area[0]
    if sex&1:
        return '男'
    else:
        return '女'
# 读户籍地表格
shenfenzheng = pd.read_excel("151单列身份证.xlsx")  #,usecols=[2]

idinfo = pd.read_csv('151身份证区号对应表.csv',encoding='utf-8',header=None,names=['代码','区域'],index_col=0)
# print(idinfo.head())
shenfenzheng["户籍地"] = shenfenzheng.apply(idtoarea,axis=1) #
shenfenzheng["生日"] = shenfenzheng.apply(idtobirth,axis=1)
shenfenzheng["性别"] = shenfenzheng.apply(idtosex,axis=1)
# data.insert(1,'性别',sex)
shenfenzheng
身份证户籍地生日性别
0331002199505127463浙江省台州市椒江区19950512
1110117198909236600北京市平谷区19890923
2130732196605209540河北省张家口市赤城县19660520
3130683195111307896河北省保定市安国市19511130
423060619960408401X黑龙江省大庆市大同区19960408
5370634197210224320山东省烟台市长岛县19721022
6632722199912061663青海省玉树藏族自治州杂多县19991206
7220521196411030544吉林省通化市通化县19641103
8542200196405291738西藏自治区山南地区19640529
9513433197112306308四川省凉山彝族自治州冕宁县19711230
10360424197507128377江西省九江市修水县19750712
11350627198908297043福建省漳州市南靖县19890829
12620600200205299064甘肃省武威市20020529
13152502199311106300内蒙古自治区锡林郭勒盟锡林浩特市19931110
14511322194502251015四川省南充市营山县19450225
1513043219610902273X河北省邯郸市广平县19610902
16623001196403049493甘肃省甘南藏族自治州合作市19640304
17640323199604057683宁夏回族自治区吴忠市盐池县19960405
18340703195302230732安徽省铜陵市狮子山区19530223

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kafeihule

感谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值