首页 > 解决方案 > (Python) astype(int) 无法从对象中删除前导零

问题描述

新年快乐!

目前我正在处理如下数据框列,重点是 ACCOUNT_NUMBER 列(类型“对象”):

  BRANCH_CODE ACCOUNT_NUMBER  ACCOUNT_HEAD SCHEDULE_DUE_DATE  \
        1    00001838002     211102000               NaT   
        1    00001867003     211102000               NaT   
        1    00001962020     211102000               NaT   
        1    030MZAX9082     211102000               NaT   
        1    00002404079     211102000               NaT   
        1    00010322002     211102000               NaT   
        1    00021070011     211102000               NaT   
        1    091QWEV34QA     211102000               NaT   
        1    00024605002     211102000               NaT   
        1    214QSVC45AX     211102000               NaT 

如您所见,ACCOUNT_NUMBER 中的一些值完全是数字,还有一些是数字和字母的混合。我的目标是将完全是数字的值从“object”转换为“int”,并将数字和字母混合的值保留为“object”(忽略)。为此,我正在尝试以下代码行:

file_consol['ACCOUNT_NUMBER']=file_consol['ACCOUNT_NUMBER'].astype(int,errors='ignore')

但是,代码行无法将数字转换为 int。我在下面尝试了另一种选择,但它也不起作用:

file_consol_P['ACCOUNT_NUMBER']=file_consol_P['ACCOUNT_NUMBER'].astype(str).astype(int,errors='ignore')

非常感谢您对此的任何帮助或解释。谢谢!

标签: pythonobjecttypesinteger

解决方案


尝试应用:

file_consol['ACCOUNT_NUMBER']=file_consol['ACCOUNT_NUMBER'].apply(lambda x: int(x) if all(k.isdigit() for k in x) else x)

输出:

0        1838002
1        1867003
2        1962020
3    030MZAX9082
4        2404079
5       10322002
6       21070011
7    091QWEV34QA
8       24605002
9    214QSVC45AX

推荐阅读