我正在尝试将一个特定的(py)spark数据帧转换成另一个;原始数据帧有以下字段:
['ID','event','tstamp']
假设在“event”列中可以出现不同的可能事件,用“event_i”,i=1,…m表示。我想创建一个包含以下字段的新数据帧:
['ID','event_1','event_2','event_3',…'event_m']
其中,对于每个唯一的ID,我有发生的每个m事件的计数。有没有一种简单明了的方法可以只使用sparksqlapi来实现这一点,而不需要转换成rdd再转换回来?在
我可以从头开始创建一个dataframe,方法是首先用m events创建一个模式,按每个惟一的ID进行筛选,然后使用groupBy('event').count()获取事件计数,并从中手动创建行并将其附加到dataframe中,但我只是觉得可能有更简单的方法来做这件事…我找不到任何类似的东西,但如果有人问过我,我道歉。在
一个可能的解决方案是使用.withColumn方法和UDF生成带有新列的新DF,如下所示
很明显,你可以自动化更多我的代码,只是一个例子。 此时,您应该对您的ID进行分组并执行sum聚合。在
^{pr2}$相关问题 更多 >
编程相关推荐