如何将Python pandas代码转换为等效的PySpark DataFrame实现
PySpark 对应实现代码
首先导入需要用到的PySpark依赖函数:
from pyspark.sql import SparkSession from pyspark.sql.functions import col, contains
如果你已经将原始数据加载为PySpark DataFrame,变量名为qm1,直接执行以下核心逻辑即可:
# 新增c1列:判断id列的值是否是question列的子串 qm1 = qm1.withColumn("c1", contains(col("question"), col("id"))) # 将c1列从布尔类型转换为字符串类型 qm1 = qm1.withColumn("c1", col("c1").cast("string")) # 筛选出c1等于'True'的行,得到结果表qm1a qm1a = qm1.filter(col("c1") == "True")
如果需要完整可运行的测试示例,可以参考以下代码:
# 初始化SparkSession spark = SparkSession.builder.appName("substring_filter").getOrCreate() # 加载测试数据,可替换为你自己的数据源读取逻辑 test_data = [ ("Women", 0, "omen"), ("machine", 0, "mac"), ("test", 0, "abc") ] schema = "question string, key int, id string" qm1 = spark.createDataFrame(test_data, schema=schema) # 执行核心逻辑 qm1 = qm1.withColumn("c1", contains(col("question"), col("id"))) qm1 = qm1.withColumn("c1", col("c1").cast("string")) qm1a = qm1.filter(col("c1") == "True") # 打印输出结果 qm1a.show()
逻辑对应说明
contains(col("question"), col("id"))完全对应你原Python代码中x[0] in x[1]的子串判断逻辑cast("string")对应原代码的astype(str)类型转换操作filter方法对应原代码的布尔索引行筛选操作
内容的提问来源于stack exchange,提问作者user3318064
相关产品推荐
相关产品推荐

