• Post author:
  • Post category:Pandas
  • Post last modified:December 5, 2024
  • Reading time:16 mins read
You are currently viewing Pandas Convert Floats to Strings in DataFrame

To convert floats to strings in a Pandas DataFrame, you can use the DataFrame.astype() function and the DataFrame.apply() method. These tools enable you to modify the data type of specific columns or the entire DataFrame. In this article, I will demonstrate how to convert one or multiple float columns to string type in a DataFrame with practical examples.

Advertisements

Key Points –

  • The simplest way to convert float columns to strings is by using the astype(str) method.
  • You can apply astype(str) to an entire DataFrame to convert all columns to strings, including floats.
  • To convert specific columns, select them and apply astype(str) only to those columns.
  • Using apply() with a lambda function allows custom string formatting for float conversion in specific columns.
  • You can conditionally convert float values to strings based on specific criteria using apply() or other conditional logic.
  • Use apply() with string formatting functions (e.g., '{:.2f}'.format()) to control the appearance of float values.
  • If the float columns contain scientific notation, converting to string will preserve this formatting unless specified otherwise.

Syntax of DataFrame.astype()

Following is a syntax of the DataFrame.astype(). This function takes dtypecopy, and errors params.


# Syntax of DataFrame.astype() method
DataFrame.astype(dtype, copy=True, errors='raise')

Parameters of astype()

Following are the parameters of astype() function.

  • dtype -The data type you want to convert the DataFrame or Series to. It can be a single type (e.g., str, float, int), or a dictionary specifying the type for each column.
  • copy (optional, default: True) – If True, the method creates a copy of the object with the new dtype. If False, the changes are made in place if possible.
  • errors (optional, default: ‘raise’) –
    • 'raise' – Will raise an error if conversion fails.
    • 'ignore' – Will ignore any errors during conversion and keep the original value.

Return Value

it returns a new DataFrame or Series with the data type(s) specified.

To run some examples of converting floats to strings in DataFrame, let’s create Pandas DataFrame with a few rows and columns, and execute and validate the results.


import pandas as pd

# Sample DataFrame with floats
df = pd.DataFrame({
    'Price': [12.99, 15.49, 9.75],
    'Discount': [2.25, 1.40, 0.85]
})

print("Create DataFrame:\n", df)
print("------------------------------------")
print("Get type of the columns of DataFrame:\n", df.dtypes)

Yields below output.

pandas convert float string

Simple Conversion of All Columns

To perform a simple conversion of all columns from float to string, you can use the astype(str) method on the entire DataFrame.


# Convert all columns to strings
df2 = df.astype(str)
print("DataFrame after conversion to strings:\n", df2)
print("---------------------------------------")
print("Get type of the columns after conversion:\n", df.dtypes)

In the above example, convert all the float values in the DataFrame to strings and display the new data types of the columns.

pandas convert float string

Using astype() to Convert Specific Column

Alternatively, to convert a specific column in a Pandas DataFrame from float to string, you can use the astype() method and specify the column you want to convert.


# Convert specific column 'Price' to string
df['Price'] = df['Price'].astype(str)
print("DataFrame after converting 'Price' to string:\n", df)
print("------------------------------------")
print("Data types after conversion:\n", df.dtypes)

# Output:
# DataFrame after converting 'Price' to string:
#    Price  Discount
# 0  12.99      2.25
# 1  15.49      1.40
# 2   9.75      0.85
# ------------------------------------
# Data types after conversion:
#  Price        object
# Discount    float64
# dtype: object

In the above example, a sample DataFrame is generated containing two float columns: Price and Discount. The original DataFrame along with its data types is displayed. The astype(str) method is then applied to the Price column to change its data type from float to string. Finally, the modified DataFrame and the updated data types are shown.

Using applymap() to convert all elements

You can use the applymap() function in Pandas to apply a function to every element in a DataFrame. This is particularly useful for converting all elements, such as converting all float values to strings.


# Use applymap() to convert all elements to strings
df = df.applymap(str)
print("DataFrame after converting all elements to strings:\n", df)
print("------------------------------------")
print("Data types after conversion:\n", df.dtypes)

# Output:
# DataFrame after converting all elements to strings:
#    Price Discount
# 0  12.99     2.25
# 1  15.49      1.4
# 2   9.75     0.85
# ------------------------------------
# Data types after conversion:
# Price       object
# Discount    object
# dtype: object

In the above example, a sample DataFrame is created with two float columns: Price and Discount. The applymap(str) method is applied to the DataFrame, transforming every element into a string. Finally, the updated DataFrame along with the new data types is printed.

Using apply() with Lambda for Custom Formatting

The apply() method in Pandas is used to apply a function along an axis of the DataFrame (either rows or columns). It can also be used to apply a function element-wise if used with a Series.

Syntax of DataFrame.apply()

Following is a syntax of the DataFrame.apply(). This function takes funcaxis, raw, result_type and args params.


# Syntax of DataFrame.apply() method
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)

Similarly, you can use the apply() method along with a lambda function to perform custom formatting on specific columns in a Pandas DataFrame. This allows you to convert float values to strings while also applying specific formatting, such as adding a currency symbol or controlling the number of decimal places.


# Use apply() with lambda to format 'Price' and 'Discount' columns
df['Price'] = df['Price'].apply(lambda x: f'${x:.2f}')
df['Discount'] = df['Discount'].apply(lambda x: f'{x:.2f}%')
print("DataFrame after custom formatting:\n", df)
print("------------------------------------")
print("Data types after conversion:\n", df.dtypes)

# Output:
# DataFrame after custom formatting:
#     Price Discount
# 0  $12.99    2.25%
# 1  $15.49    1.40%
# 2   $9.75    0.85%
# ------------------------------------
# Data types after conversion:
# Price       object
# Discount    object
# dtype: object

In the above example, the apply() method is utilized with a lambda function to format the Price column by adding a dollar sign and ensuring two decimal places. Similarly, the Discount column is formatted to include a percentage sign and two decimal places. Finally, the updated DataFrame along with its new data types is displayed.

FAQ on Pandas Convert Floats to Strings in DataFrame

How do I convert a column of floats to strings in a pandas DataFrame?

You can use the astype() method to convert a column of floats to strings. For instance, df['column_name'] = df['column_name'].astype(str).

Can I convert multiple columns of floats to strings at once?

You can select multiple columns and apply astype(str) to each. For instance, df[['col1', 'col2']] = df[['col1', 'col2']].astype(str).

Why do I need to convert floats to strings in a DataFrame?

Converting floats to strings can be necessary when preparing data for visualization, exporting to a text-based format (like CSV or JSON), or ensuring consistency in data formatting, especially when dealing with mixed data types.

Is there a difference between astype(str) and using apply(str) when converting floats to strings?

Both approaches will convert floats to strings, but astype(str) is generally more efficient. apply(str) can be used for more complex logic but is slower for simple conversions.

What are the alternatives to using astype() for converting floats to strings?

Besides astype(), you can use map() or apply() if you need more control over the conversion process.

Conclusion

In conclusion, converting float values to strings in a Pandas DataFrame can be achieved through various methods, such as astype(), applymap(), and apply() with custom formatting. This conversion can be applied to specific columns or the entire DataFrame, offering flexibility when working with different data types.

Happy Learning!!

Reference