【发布时间】:2021-10-02 22:09:18
【问题描述】:
在 pyspark 中,我有一个包含 3 列的数据框,我想用字典中的值替换部分列值。如果整个列值是字典的一部分,df.replace 将替换 only,但我想替换列值的一部分中的值。例如:
id = [("val1","01-JAN-2021","01-MAR-2021"),
("val2","02-JUL-2021","01-AUG-2022"),
("val3","02-JUL-2021",None)]
df = spark.createDataFrame(id,["id","start_date","end_date"])
df = df.replace(date_dict, subset = ["start_date", "end_date"])
字典是:
date_dict = {"JAN": "Jan",
"FEB" : "Feb",
"MAR" : "Mar",
"APR" : "Apr",
"MAY" : "May",
"JUN" : "Jun",
"JUL" : "Jul",
"AUG" : "Aug",
"SEP" : "Sep",
"OCT" : "Oct",
"NOV" : "Nov",
"DEC" : "Dec"}
我尝试了以下方法:
df = df.replace(date_dict, subset = ["start_date", "end_date"])
但它不会替换,因为列值是“01-JUN-2020”而不是“JUN”。知道如何实现这一目标吗?
【问题讨论】:
-
您需要更换吗?为什么不将所有内容都转换为大写?
标签: python dataframe apache-spark pyspark replace