pandas - 如何将 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 中的字符串类型?
解决方案
要转换为字符串,您可以使用StringDtype
:
pandas_df["input_2"] = pandas_df["input_2"].astype(pd.StringDtype())
推荐阅读
- reactjs - webpack 解决冲突?我应该使用别名吗?
- node.js - 如何在我调用回调的承诺中捕获错误?
- c# - 带有绑定到列的子句的 LINQ 查询
- c# - 在 C# Winforms 中使用 MouseEvents 更改图表系列的外观
- python - TurtleBot 2i Catkin_Make 给出:ModuleNotFoundError: No module named 'catkin_pkg.terminal_color'
- python - 根据任意字段查找字典列表的交集
- python - 在Django中读取文件夹中的所有图像文件
- javascript - 如何使用 JavaScript 更改 CreateTextNode 的样式
- css - HTML/CSS 如何通过将其堆叠为一列来使显示响应较小的屏幕?
- python - 如何在 Python 中获取音频文件的脉冲宽度?