我在pyspark有数据帧。它的一些数字列包含“nan”,因此当我读取数据并检查dataframe的模式时,这些列将具有“string”类型。如何将它们更改为int类型。我将“nan”值替换为0,然后再次检查架构,但同时也显示了这些列的字符串类型。我遵循以下代码:
data_df = sqlContext.read.format("csv").load('data.csv',header=True, inferSchema="true")
data_df.printSchema()
data_df = data_df.fillna(0)
data_df.printSchema()
这里的列'Plays'和'drafts'包含整数值,但由于这些列中存在nan,因此它们被视为字符串类型。
另一种方法是,如果有多个字段需要修改,则使用StructField。
例如:
输出:
以前
之后:
这是一个稍长的转换过程,但其优点是可以完成所有必需的字段。
需要注意的是,如果只为必需字段分配了数据类型,那么结果数据帧将只包含那些已更改的字段。
在用
0
替换NaN
之后,可以使用cast
(作为int)可以为每列运行循环,但这是将字符串列转换为整数的最简单方法。
相关问题 更多 >
编程相关推荐