我有一个 Dataframe ,我想从2列创建透视表,我使用的问题标题列将有其值透视如下:年龄,年龄_数字,答案标题是值,我的问题是我想把答案标题的值放在一个列表中,我正在使用collect_list函数,但问题是我希望像age_numeric这样的新列是int的列表,而age列是字符串的列表,基于问题类型列,但当我尝试代码时,它总是给我一个字符串的列表,你知道怎么解决这个问题吗?
这是密码
y=output.groupby("sessionId").pivot("questionHeader").
agg(collect_list(when(col("questionType")=="numericAnswer",
col("answerHeader")
.cast("float")).when(col("questionType")!="numericAnswer",col("answerHeader"))))
这就是我得到的
| 会话标识|年龄|年龄_数字
| 一个|[“20-25年”]|[“20”]
| 三个|[“20-25年”]|[“20”]
这就是我想要的
| 会话标识|年龄|年龄_数字
| 一个|[“20-25年”]|[第二十条]
| 三个|[“20-25年”]|[第二十条]
1条答案
按热度按时间omjgkv6w1#
如果您想要最后两行中的输出,则不需要透视,只需对这两列中的每一列执行groupby和collect_list。要获取Age_numeric的整数列表,请应用.cast(“array< int>“),或者在collect_list()之前更改Age_numeric列的类型。
复制数据
复制输出