【发布时间】:2018-11-30 05:24:03
【问题描述】:
我有一个包含两列的 spark 数据框,我正在尝试添加一个新列,该列引用这些列的新值。我从包含该列正确值的字典中获取这些值
+--------------+--------------------+
| country| zip|
+--------------+--------------------+
| Brazil| 7541|
|United Kingdom| 5678|
| Japan| 1234|
| Denmark| 2345|
| Canada| 4567|
| Italy| 6031|
| Sweden| 4205|
| France| 6111|
| Spain| 8555|
| India| 2552|
+--------------+--------------------+
国家/地区的正确值应该是 India,zip 应该是 1234,并且存储在字典中
column_dict = {'country' : 'India', zip: 1234}
我正在尝试将新列值设为“巴西:印度,邮编:1234”,其中列的值与这些值不同。
我已经尝试过以下方式,但它返回的是空列,但函数正在返回所需的值
cols = list(df.columns)
col_list = list(column_dict.keys())
def update(df, cols = cols , col_list = col_list):
z = []
for col1, col2 in zip(cols,col_list):
if col1 == col2:
if df.col1 != column_dict[col2]:
z.append("{'col':" + col2 + ", 'reco': " + str(column_dict[col2]) + "}")
else:
z.append("{'col':" + col2 + ", 'reco': }")
my_udf = udf(lambda x: update(x, cols, col_list))
z = y.withColumn("NewValue", lit(my_udf(y, cols,col_list)))
如果我将相同的输出数据帧导出到 csv 值,则附带“\”的部分。如何准确获取列上的函数值?
【问题讨论】:
-
您期待什么样的数据框?你的问题不是很清楚...你能告诉我们你感兴趣的结果吗?
标签: python apache-spark pyspark apache-spark-sql user-defined-functions