将熊猫数据框奇怪地转换为具有已定义架构的火花数据框

时间:2019-12-01 00:05:04

标签: pandas dataframe apache-spark

我正面临以下问题,但尚未获得答案:当将具有整数的pandas数据帧转换为具有数据假设为字符串的架构的pyspark数据帧时,值将变为“奇怪的”字符串,就像下面的例子一样。我已经保存了很多重要的数据,我想知道为什么会发生这种情况,以及是否有可能将这些符号“解码”回整数形式。预先感谢!

import pandas as pd 
from pyspark.sql.types import StructType, StructField,StringType

df = pd.DataFrame(data = {"a": [111,222, 333]})

schema = StructType([
    StructField("a", StringType(), True)
])

sparkdf = spark.createDataFrame(df, schema)
sparkdf.show()

输出:

--+
+---+
|  a|
+---+
|  o|
|  Þ|
|  ō|
+---+

1 个答案:

答案 0 :(得分:0)

我无法在任何最新版本上重现该问题,但最可能的原因是您错误地定义了架构(与启用的Arrow支持结合使用)。

强制转换输入:

df["a"] = df.a.astype("str")

或定义正确的模式:

from pyspark.sql.types import LongType

schema = StructType([
    StructField("a", LongType(), True)
])
相关问题