我有一个最终的 Dataframe ,格式如下:
- 产品ID:字符串
- 产品_货到付款:串
- 产品名称(_N):串
- 产品版本:整数
- 产品线名称:串
- 语言(_COD):串
- 产品类型名称:串
- Load_DAT:整数
- LoadEnd_DAT:整数
- 编辑变更_DTT:时间戳记
我想在ID(Product_ID)为-1的 Dataframe 中添加一个新行,在字符串列中插入“Unknown”,并在其余数据类型中设置为“null”,例如:
我创建了以下代码:
id_column = "Product_ID"
df_lessOne = spark.createDataFrame(["-1"], "string").toDF(id_column) #create a new id_column row with -1
appended_df = finalDf.unionByName(df_lessOne, allowMissingColumns=True) #add the rest columns of dataframe with nulls
appended_df_filter = appended_df.filter(""+ id_column + " = '-1'")
columns = [item[0] for item in appended_df_filter.dtypes if item[1].startswith('string')] #select only string columns
# replace string columns with "Unknown"
for c_na in columns:
appended_df_filter = (appended_df_filter
.filter(""+ id_column + " = '-1'")
.withColumn(c_na, lit('Unknown'))
)
appended_df = appended_df.filter(""+ id_column + " <> '-1'")
dfs = [appended_df, appended_df_filter]
#add final -1 row to the final dataframe
finalDf = reduce(DataFrame.unionAll, dfs)
display(finalDf)
但不幸的是,效果不太好
我尝试动态地创建它,因为我想在其他 Dataframe 中使用它。我只需要在之后更改id_column。
有人能帮我实现这个目标吗
谢谢你,谢谢你
1条答案
按热度按时间qco9c6ql1#