1

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.

Learner91
  • 103
  • 6

1 Answers1

1

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'>
BERA
  • 1,345
  • 3
  • 16
  • 36