Spark数据帧 - 检查列是否为整数类型

时间:2018-04-11 20:33:42

标签: python pyspark spark-dataframe

我试图找出火花数据框中我的列的数据类型,并根据该dedeuction操作列。

这是我到目前为止所做的:

import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('MyApp').getOrCreate()
df = spark.read.csv('Path To csv File',inferSchema=True,header=True)

for x in df.columns:
    if type(x) == 'integer':
    print(x+": inside if loop")

print(x+": inside if loop")语句似乎永远不会被执行,但我确信有几列是整数数据类型。 我在这里错过了什么?

3 个答案:

答案 0 :(得分:2)

您正在迭代列的名称,因此type(x)永远不会等于"整数" (它总是一个字符串)。

您需要使用pyspark.sql.DataFrame.dtypes

for x, t in df.dtypes:
    if t=="int":
        print("{col} is integer type".format(col=x))

使用df.printSchema()查看架构也很有用。

答案 1 :(得分:0)

您可以尝试:

dict(df.dtypes)['column name'] == 'int'

df.dtypes返回元组列表,而将类型作为字符串作为每列的最简单方法是将其转换为dict。

答案 2 :(得分:-2)

尝试:

if type(x) == int:

type(x)不返回'integers',它们应该为整数返回int。