最近在分析一个表格,需要提取某一列里的身份证号,再与库进行比对。
使用的正则表达式提取,问题是提取后生成的是多个身份证号,单元格的内容变成了列表方式。
df['身份证号']=df['A'].str.findall(r'\d{17}[\dXx]')
因此,这时候找到一个方法:用value_tolist列表转元素。
df2 = pd.DataFrame(df['身份证号'].values.tolist())
比对的时候就可以多列循环进行比对了。
for j in range(len(df2.columns)):
result = df2[j].notna() & df2[j].isin(df3["要比对的列"])
更简单的方式是循环读取行,然后列表里元素转成集合,但是这样的话就会无法确定比对出来的元素在哪一行。所以用这样的方式配合index就可以找到所在的位置并输出。
index = df2[df2[j].notna() & df2[j].isin(df3["要比对的列'])].index