Search code examples
pythonpandasseries

convert mixed list of int+string(characters, integers) to int for numeric


My current code:

data={'test':['Karan','13333333','5666666','Aryan', 44444,55555]}
df=pd.DataFrame(data)

for i in df["test"]:
    print(i, type(i))

My current output:

Karan <class 'str'>
13333333 <class 'str'>
5666666 <class 'str'>
Aryan <class 'str'>
44444 <class 'int'>
55555 <class 'int'>

My expected output:

Karan <class 'str'>
13333333 <class 'int'>
5666666 <class 'int'>
Aryan <class 'str'>
44444 <class 'int'>
55555 <class 'int'>

If possible, I wish to know more different advanced ways like using python style or pandas way in one line or two.


Solution

  • Try this:

    import pandas as pd
    data={'test':['Karan','13333333','5666666','Aryan', 44444,55555]}
    df=pd.DataFrame(data)
    
    df["test2"] = df["test"].apply(lambda x: int(x) if str(x).isdigit() else x) 
    
    for i in df["test2"]:
        print(i, type(i))
    
    # Karan <class 'str'>
    # 13333333 <class 'int'>
    # 5666666 <class 'int'>
    # Aryan <class 'str'>
    # 44444 <class 'int'>
    # 55555 <class 'int'>