Pandas – Convert Single or All Columns To String Type?

In this article, I will explain how to convert single or multiple pandas columns to string type, here, I will demonstrate using DataFrame.astype(str), DataFrame.values.astype(str), DataFrame.apply(str), DataFrame.map(str) and DataFrame.applymap(str) methods to covert any type to string type.

1. Quick Examples of Convert Columns To String

If you are in a hurry, below are some of the quick examples of how to convert columns to string in Pandas DataFrame. You can apply these to convert from/to any type in Pandas

Note that map(str) and apply(str) takes less time to compare with the remaining techniques.


# Below are quick example
# Single columns string conversion
df["Discount"] = df["Discount"].astype(str)
print(df.dtypes)

# Using DataFrame.values.astype() to convert columns string 
df["Discount"]=df["Discount"].values.astype(str)
print(df.dtypes)

# Multiple columns string conversion
df["Fee"] = df["Fee"].astype(str)
df["Discount"]= df["Discount"].astype(str)
print(df.dtypes)

# Multiple columns string conversion
df[['Courses', 'Fee', 'Duration','Discount']] = df[['Courses', 'Fee', 'Duration','Discount']].astype(str)
print(df.dtypes)

# Using apply(str) method
df["Fee"]=df["Fee"].apply(str)
print(df.dtypes)

# Using apply(str) method to lambda function
df["Fee"] = df["Fee"].apply(lambda x: str(x))
print(df.dtypes)

# Convert columns string using map(str) method
df['Fee'] = df["Fee"].map(str)
print(df.dtypes)

# Convert entire DataFrame to string
df=df.applymap(str)
print(df.dtypes)

Now, let’s see a detailed example. first, create a Pandas DataFrame with a few rows and columns and execute and validate the results. Our DataFrame contains column names Courses, Fee, Duration, and Discount.


import pandas as pd
import numpy as np
technologies= ({
   'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark"],
    'Fee' :[22000,25000,23000,24000,26000,25000,25000],
    'Duration':['30day','50days','55days','40days','60days','35day','55days'],
    'Discount':[1000,2300,1000,1200,2500,1300,1400]
              })
df = pd.DataFrame(technologies)
print(df)
print(df.dtypes).

Yields below output.


   Courses    Fee Duration  Discount
0    Spark  22000    30day      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   55days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000    35day      1300
6    Spark  25000   55days      1400

Courses     object
Fee          int64
Duration    object
Discount     int64
dtype: object

You can identify the data type of each column by using dtypes.

2. Convert Single Column to String Type Using DataFrame.astype(str)

Use df["Discount"]=df["Discount"].astype(str) method to change the data type of the Discount column from int64 to object type representing the string.


# Single columns string conversion
df["Discount"] = df["Discount"].astype(str)
print(df.dtypes)

3. Using DataFrame.values.astype(str) to Convert Columns String

You can also use df["Discount"]=df["Discount"].values.astype(str) method to change the data type of the Discount column from int64 to object type representing the string.


# Using DataFrame.values.astype() to convert columns string 
df["Discount"]=df["Discount"].values.astype(str)
print(df.dtypes)

Yields below output.


Courses     object
Fee          int64
Duration    object
Discount    object
dtype: object

4. Convert Multiple Columns to String Using DataFrame.astype(str)

To convert multiple columns from list to strings, use df[['Courses','Fee','Duration','Discount']]=df[['Courses','Fee','Duration','Discount']].astype(str), this changes the data type of all columns from int64 to object type representing the string.


# Multiple columns string conversion
df["Fee"] = df["Fee"].astype(str)
df["Discount"]= df["Discount"].astype(str)
print(df.dtypes)

# Multiple columns string conversion
df[['Courses', 'Fee', 'Duration','Discount']] = df[['Courses', 'Fee', 'Duration','Discount']].astype(str)
print(df.dtypes)

Yields below output.


Courses     object
Fee         object
Duration    object
Discount    object
dtype: object

5. Using DataFrame.apply(str)

You can convert the column “Fee” to a string by simply using apply(str) , for example df["Fee"]=df["Fee"].apply(str) .


# Using apply(str) method
df["Fee"]=df["Fee"].apply(str)
print(df.dtypes)

Yields below output.


Courses     object
Fee         object
Duration    object
Discount     int64
dtype: object

Using .apply() with a lambda conversion function also works in this case. For example df["Fee"] = df["Fee"].apply(lambda x: str(x)).


# Using apply(str) to lambda function
df["Fee"] = df["Fee"].apply(lambda x: str(x))
print(df.dtypes)

Yields same output as above.

6. Convert Columns to String Using DataFrame.map(str)

You can also convert the column “Fee” to a string by using map(str) , for example df['Fee']=df["Fee"].map(str).


# Convert columns string using map(str) method
df['Fee'] = df["Fee"].map(str)
print(df.dtypes)

Yields same output as above.

Note: map(str) and apply(str) takes less time to compare with the remaining techniques.

7. Convert Entire DataFrame to Strings Using DataFrame.applymap(str)

If you want to change the data type for all columns in the DataFrame to the string type, you can use df=df.applymap(str) method.


# Convert entire DataFrame to string
df=df.applymap(str)
print(df.dtypes)

Yields below output.


Courses     object
Fee         object
Duration    object
Discount    object
dtype: object

Conclusion

In this article, you have learned how to convert columns to string type in Pandas using DataFrame.astype(str), DataFrame.values.astype(str) and DataFrame.apply(str) methods. Also, you have learned how to convert columns to string in DataFrame using DataFrame.map(str), DataFrame.applymap(str) methods.

Happy Learning !!

You May Also Like

References

NNK

SparkByExamples.com is a Big Data and Spark examples community page, all examples are simple and easy to understand and well tested in our development environment Read more ..

Leave a Reply

Pandas – Convert Single or All Columns To String Type?