Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
