PySpark createDataFrame丢失转置后Pandas数据首列求助
解决Spark DataFrame转置后首列丢失的问题
问题根源在于:Pandas转置后,原DataFrame的列名会变成新DataFrame的索引,而Spark的createDataFrame()默认不会把Pandas的索引当作普通列导入,导致这部分内容丢失。只需把Pandas的索引转换成普通列,再转成Spark DataFrame即可,具体操作如下:
解决步骤
- 对转置后的Pandas DataFrame执行
reset_index(),将索引转为名为index的普通列 - (可选)给这个新列重命名为更贴合业务的名称,比如
指标名称、item等 - 再用
spark.createDataFrame()转换,此时该列会被正常导入Spark DataFrame
代码示例
假设你原来的代码是这样的:
import pandas as pd from pyspark.sql import SparkSession spark = SparkSession.builder.appName("TransposeFix").getOrCreate() # 读取CSV到Pandas DataFrame pdf = pd.read_csv("your_data.csv") # 执行转置 pdft = pdf.transpose() # 转Spark时丢失索引列 sdf = spark.createDataFrame(pdft)
修改后的代码:
# 转置后将索引转为普通列,并自定义列名 pdft_fixed = pdft.reset_index().rename(columns={"index": "指标名称"}) # 转换为Spark DataFrame,此时"指标名称"列会被保留 sdf = spark.createDataFrame(pdft_fixed)
这样处理后,原来包含name、ttm、日期的首列就会以你指定的列名出现在Spark DataFrame中。
内容的提问来源于stack exchange,提问作者user10129585
相关产品推荐
相关产品推荐

