PySpark - 将复合键名称添加到字典
PySpark - Add a composite key name to the Dictionary
这是我的第一个post.
如果有任何错误请多多包涵
这是数据框 df:列 'a' 是字符串,其余是浮点数。
我已经为数据框添加了一张图像,因为当我手动添加数据时,格式不知何故变得混乱。
Dataframe
在给定的 dataFrame df 上,我想按列分组 'a' 并找到彼此的最小值和最大值 column.I 想要得到输出 dictionary.So,我转换了将生成的 pyspark 数据帧转换为 JSON 并使用 json.loads 转换为 Dictionary.
Code snippet:
import pyspark.sql.functions as F
cols=['b','c']
req_cols=[F.struct(F.first('a').alias('a'),F.max(col).alias('max'),F.min(col).lias('min')).alias(col) for col in cols]
df_cache=df.groupby('a').agg(*req_cols).cache()
dict=json.loads(df_cache.toJSON.collect()[0])
我的输出:
{
"b": {
"max":
"min":
"a":'10'
},
"c": {
"max":
"min":
"a":'10'
},
}
所需输出:
{
"b_10": {
"max":
"min":
"a":'10'
},
"c_10": {
"max":
"min":
"a":'10'
},
"b_20": {
"max":
"min":
"a":'20'
},
"c_20": {
"max":
"min":
"a":'20'
},
"b_30": {
"max":
"min":
"a":'30'
},
"c_30": {
"max":
"min":
"a":'30'
},
}
Output
分组时使用主元
df_cache = df.groupBy().pivot('a').agg(*req_cols).cache()
列名称将与您想要的输出不同,因此您需要根据需要更改它们
这是我的第一个post.
如果有任何错误请多多包涵这是数据框 df:列 'a' 是字符串,其余是浮点数。
我已经为数据框添加了一张图像,因为当我手动添加数据时,格式不知何故变得混乱。
Dataframe
在给定的 dataFrame df 上,我想按列分组 'a' 并找到彼此的最小值和最大值 column.I 想要得到输出 dictionary.So,我转换了将生成的 pyspark 数据帧转换为 JSON 并使用 json.loads 转换为 Dictionary.
Code snippet:
import pyspark.sql.functions as F
cols=['b','c']
req_cols=[F.struct(F.first('a').alias('a'),F.max(col).alias('max'),F.min(col).lias('min')).alias(col) for col in cols]
df_cache=df.groupby('a').agg(*req_cols).cache()
dict=json.loads(df_cache.toJSON.collect()[0])
我的输出:
{
"b": {
"max":
"min":
"a":'10'
},
"c": {
"max":
"min":
"a":'10'
},
}
所需输出:
{
"b_10": {
"max":
"min":
"a":'10'
},
"c_10": {
"max":
"min":
"a":'10'
},
"b_20": {
"max":
"min":
"a":'20'
},
"c_20": {
"max":
"min":
"a":'20'
},
"b_30": {
"max":
"min":
"a":'30'
},
"c_30": {
"max":
"min":
"a":'30'
},
}
Output
分组时使用主元
df_cache = df.groupBy().pivot('a').agg(*req_cols).cache()
列名称将与您想要的输出不同,因此您需要根据需要更改它们