簡體   English   中英

PySpark 如何遍歷 Dataframe 列並更改數據類型?

[英]PySpark how to iterate over Dataframe columns and change data type?

迭代 Spark 數據幀(使用 Pyspark)並一旦找到Decimal(38,10)數據類型 -> 將其更改為 Bigint(並將所有數據重新保存到同一數據幀)的最佳方法是什么?

我有一部分用於更改數據類型 - 例如:

df = df.withColumn("COLUMN_X", df["COLUMN_X"].cast(IntegerType()))

但試圖找到並與迭代集成..

謝謝。

您可以遍歷df.dtypes並在 type 等於decimal(38,10)時轉換為bigint

from pyspark.sql.funtions import col

select_expr = [
    col(c).cast("bigint") if t == "decimal(38,10)" else col(c) for c, t in df.dtypes
]

df = df.select(*select_expr)

我找到了這篇文章https://stackoverflow.com/a/54399474/11268096 ,您可以在其中循環遍歷所有列並將它們轉換為所需的數據類型。

from pyspark.sql import functions as F

for col in df.columns:
  df = df.withColumn(
    col,
    F.col(col).cast("double")
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM