In this short guide, you’ll see 3 approaches to convert floats to strings in Pandas DataFrame for:
(1) An individual DataFrame column using astype(str):
df['DataFrame Column'] = df['DataFrame Column'].astype(str)
(2) An individual DataFrame column using apply(str):
df['DataFrame Column'] = df['DataFrame Column'].apply(str)
(3) An entire DataFrame using:
df = df.astype(str)
Next, you’ll see how to apply each of the above approaches using simple examples.
3 Approaches to Convert Floats to Strings in Pandas DataFrame
(1) Convert floats to strings for an individual DataFrame column using astype(str)
Here is an example of a DataFrame with a single column (called ‘numeric_values‘) that contains only floats:
import pandas as pd data = {'numeric_values': [22.0, 9.0, 557.0, 15.995, 225.12]} df = pd.DataFrame(data,columns=['numeric_values']) print(df) print(df.dtypes)
Run the code, and you’ll see that the data type of the ‘numeric_values’ column is float:
numeric_values
0 22.000
1 9.000
2 557.000
3 15.995
4 225.120
numeric_values float64
dtype: object
You can then convert the floats to strings using astype(str):
df['DataFrame Column'] = df['DataFrame Column'].astype(str)
So the complete Python code to perform the conversion is:
import pandas as pd data = {'numeric_values': [22.0, 9.0, 557.0, 15.995, 225.12]} df = pd.DataFrame(data,columns=['numeric_values']) df['numeric_values'] = df['numeric_values'].astype(str) print(df) print(df.dtypes)
As you can see, the new data type of the ‘numeric_values’ column is ‘object‘ which represents strings:
numeric_values
0 22.0
1 9.0
2 557.0
3 15.995
4 225.12
numeric_values object
dtype: object
(2) Convert floats to strings for an individual DataFrame column using apply(str)
Optionally, you can convert the floats to strings using apply(str):
df['DataFrame Column'] = df['DataFrame Column'].apply(str)
Here is the complete code to conduct the conversion to strings:
import pandas as pd data = {'numeric_values': [22.0, 9.0, 557.0, 15.995, 225.12]} df = pd.DataFrame(data,columns=['numeric_values']) df['numeric_values'] = df['numeric_values'].apply(str) print(df) print(df.dtypes)
As before, the new data type of the ‘numeric_values’ column is object:
numeric_values
0 22.0
1 9.0
2 557.0
3 15.995
4 225.12
numeric_values object
dtype: object
(3) Convert an entire DataFrame to strings
In the final case, let’s create a DataFrame with 3 columns, where the data type of all those columns is float:
import pandas as pd data = {'numeric_values_1': [22.0, 9.0, 557.0, 15.995, 225.12], 'numeric_values_2': [79.0, 5.0, 428.0, 19.883, 514.03], 'numeric_values_3': [48.0, 7.0, 325.0, 12.772, 802.09] } df = pd.DataFrame(data,columns=['numeric_values_1','numeric_values_2','numeric_values_3']) print(df) print(df.dtypes)
As you can observe, the data type of all the columns in the DataFrame is indeed float:
numeric_values_1 numeric_values_2 numeric_values_3
0 22.000 79.000 48.000
1 9.000 5.000 7.000
2 557.000 428.000 325.000
3 15.995 19.883 12.772
4 225.120 514.030 802.090
numeric_values_1 float64
numeric_values_2 float64
numeric_values_3 float64
dtype: object
To convert the entire DataFrame from floats to strings, you may use:
df = df.astype(str)
So the complete code is as follows:
import pandas as pd data = {'numeric_values_1': [22.0, 9.0, 557.0, 15.995, 225.12], 'numeric_values_2': [79.0, 5.0, 428.0, 19.883, 514.03], 'numeric_values_3': [48.0, 7.0, 325.0, 12.772, 802.09] } df = pd.DataFrame(data,columns=['numeric_values_1','numeric_values_2','numeric_values_3']) df = df.astype(str) print(df) print(df.dtypes)
You’ll now get the newly data type of object across all the columns in the DataFrame:
numeric_values_1 numeric_values_2 numeric_values_3
0 22.0 79.0 48.0
1 9.0 5.0 7.0
2 557.0 428.0 325.0
3 15.995 19.883 12.772
4 225.12 514.03 802.09
numeric_values_1 object
numeric_values_2 object
numeric_values_3 object
dtype: object
Additional Resources
You can visit the Pandas Documentation to learn more about astype.
Alternatively, you may review the following guides for other types of conversions: