Change Data Type for one or more columns in Pandas Dataframe

Converting data types of columns in a Pandas DataFrame is essential for data analysis and calculations. Pandas provides several methods to change column data types efficiently.

Using astype()

The astype() method converts existing columns to specified data types. You can convert all columns or target specific ones ?

Converting All Columns to String

import pandas as pd

# Sample dataframe
df = pd.DataFrame({
    'DayNo': [1, 2, 3, 4, 5, 6, 7],
    'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    'Qty': [2.6, 5, 11.8, 2, 5.6, 0, 0.25]
})

# Check existing data types
print("Original data types:")
print(df.dtypes)

# Convert all columns to string
df_str = df.astype(str)
print("\nAfter converting to string:")
print(df_str.dtypes)
Original data types:
DayNo      int64
Name      object
Qty      float64
dtype: object

After converting to string:
DayNo    object
Name     object
Qty      object
dtype: object

Converting Specific Columns

import pandas as pd

df = pd.DataFrame({
    'DayNo': [1, 2, 3, 4, 5],
    'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu'],
    'Qty': [2.6, 5.0, 11.8, 2.0, 5.6]
})

# Convert specific columns
df_converted = df.astype({'DayNo': 'int32', 'Qty': 'int64'})
print(df_converted.dtypes)
DayNo     int32
Name     object
Qty       int64
dtype: object

Using to_numeric()

The pd.to_numeric() function converts strings or other data types to numeric values ?

import pandas as pd

# Create DataFrame with string numbers
df = pd.DataFrame({
    'DayNo': ['1', '2', '3', '4', '5'],
    'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu'],
    'Qty': ['2.6', '5', '11.8', '2', '5.6']
})

print("Original data types:")
print(df.dtypes)

# Convert string numbers to numeric
df['DayNo'] = pd.to_numeric(df['DayNo'])
df['Qty'] = pd.to_numeric(df['Qty'])

print("\nAfter numeric conversion:")
print(df.dtypes)
Original data types:
DayNo    object
Name     object
Qty      object
dtype: object

After numeric conversion:
DayNo      int64
Name      object
Qty      float64
dtype: object

Using infer_objects()

The infer_objects() method performs soft conversions for object columns to more specific types ?

import pandas as pd

# Create DataFrame with object dtype
df = pd.DataFrame({
    'DayNo': [1, 2, 3, 4, 5, 6, 7],
    'Qty': ['2.6', '5', '11.8', '2', '5.6', '0', '0.25']
}, dtype='object')

print("Original data types:")
print(df.dtypes)

# Apply type inference
df_inferred = df.infer_objects()
print("\nAfter inference:")
print(df_inferred.dtypes)
Original data types:
DayNo    object
Qty      object
dtype: object

After inference:
DayNo     int64
Qty      object
dtype: object

Comparison of Methods

Method Best For Error Handling
astype() Explicit type conversion Raises errors for invalid data
to_numeric() String to numeric conversion Has errors parameter
infer_objects() Automatic type detection Safe, no errors

Conclusion

Use astype() for explicit type conversions, to_numeric() for string-to-number conversions with error handling, and infer_objects() for automatic type inference. Choose the method based on your specific data conversion needs.

Updated on: 2026-03-15T17:05:50+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements