首页 > 解决方案 > 如何将 Spark 数据框中的字符串类型列转换为 Pandas 数据框中的字符串类型列

问题描述

我有一个从 pandas 数据框创建的示例 spark 数据框 -

from pyspark.sql import SparkSession

import pyspark.sql.functions as F
from pyspark.sql.types import StringType
from pyspark.sql.types import *

import pandas as pd

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()

#create sample spark dataframe first and then create pandas dataframe from it
import pandas as pd
pdf = pd.DataFrame([[1,"hello world. lets shine and spread happiness"],[2,"not so sure"],[2,"cool i like it"],[2,"cool i like it"],[2,"cool i like it"]]
                   , columns = ['input1','input2'])
df = spark.createDataFrame(pdf) # this is spark df

现在,我的数据类型为

df.printSchema()

root
 |-- input1: long (nullable = true)
 |-- input2: string (nullable = true)

如果我使用 - 将此火花数据帧转换回熊猫

pandas_df = df.toPandas() 

然后如果我尝试打印数据类型,我会返回第二列的对象类型而不是字符串类型。

pandas_df.dtypes
input1     int64
input2    object
dtype: object

如何正确地将 spark 中的这种字符串类型转换为 pandas 中的字符串类型?

标签: pandasapache-sparkpyspark

解决方案


要转换为字符串,您可以使用StringDtype

pandas_df["input_2"] = pandas_df["input_2"].astype(pd.StringDtype())

推荐阅读