首页 > 解决方案 > 检查 pyspark 数据框列的列

问题描述

我想检查 pyspark 数据框的每一列,如果该列满足特定的 dtype,那么它将执行某些功能。下面是我的代码和数据集。

数据集:

from pyspark.sql import SparkSession

spark = SparkSession.builder.master('local').appName('Word Count').config('spark.some.config.option', 'some-value').getOrCreate()
df = spark.createDataFrame(
    [
        ('A',1),
        ('A', 2),
        ('A',3),
        ('A', 4),
        ('B',5),
        ('B', 6),
        ('B',7),
        ('B', 8),
    ],
    ['id', 'v']
) #I save this to csv so can just ignore my read csv park below.

代码:

from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark import SparkContext

sqlContext = SQLContext(sc)
df = sqlContext.read.load('test.csv',
                         format ='com.databricks.spark.csv',
                         header='true',
                         inferSchema='true')

from functools import reduce
from pyspark.sql.functions import col
import numpy as np

i = (reduce(lambda x, y: x.withColumn(y, np.where(col(y).dtypes != 'str', col(y)+2, col(y))), df.columns, df)) # this is the part that I wanted to change.

侧面学习请求:如果可能的话,谁能告诉我如何只编辑特定的列?我理解使用 .select 但如果可能的话,有人可以展示一些带有一些数据集的示例。谢谢你

我的预期输出:

+---+---+
| id|  v|
+---+---+
|  A|  3|
|  A|  4|
|  A|  5|
|  A|  6|
|  B|  7|
|  B|  8|
|  B|  9|
|  B|  10|
+---+---+

旁注:我是 pyspark 的新手,所以我不明白为什么需要使用“col”。实际上到底是什么?

标签: pythondataframepyspark

解决方案


推荐阅读