【问题标题】:How to convert String type column in spark dataframe to String type column in Pandas dataframe如何将 Spark 数据框中的字符串类型列转换为 Pandas 数据框中的字符串类型列
【发布时间】:2020-09-09 13:18:25
【问题描述】:

我有一个从 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)

如果我使用 -

将此 spark 数据帧转换回 pandas
pandas_df = df.toPandas() 

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

pandas_df.dtypes
input1     int64
input2    object
dtype: object

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

【问题讨论】:

  • object 类型有什么问题?我相信它与string pyspark 中的类型具有相同的属性
  • 当我使用对象类型执行一些下游处理时,我遇到了一些我无法解决的编码错误。有没有办法将对象类型转换为字符串类型?

标签: pandas apache-spark pyspark


【解决方案1】:

要转换成字符串,可以使用StringDtype:

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

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 2020-08-03
    • 1970-01-01
    • 2021-10-15
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多