将嵌入在数据框中的行RDD转换为列表

时间:2019-03-12 05:24:09

标签: python dataframe pyspark rdd

IPYNB

我有数据帧user_recommended,如图所示。 recommendations列是如下所示的PySpark RDD:

In[10]: user_recommended.recommendations[0]
Out[10]: [Row(item=0, rating=0.005226806737482548),
         Row(item=23, rating=0.0044402251951396465),
         Row(item=4, rating=0.004139747936278582)]

我想将recommendations RDD转换为Python列表。

是否有一个脚本可以帮助我将recommendations数据框中的user_recommended列(请注意,其类型为pandas.core.frame.DataFrame)转换为列表。

1 个答案:

答案 0 :(得分:0)

另一种略有不同的方法。我认为,这样做的价值在于,它可以更容易地推广到具有两个以上元素的Rows。另外,值得注意的是,您在问题中预览的数据结构是Pandas DF,其列由PySpark Row数据结构的列表组成,实际上不是RDD。

from pyspark.sql import Row

# recreate the individual entries of the recommendation column
# these are lists of pyspark Row data structures
df_recommend = pd.DataFrame({'recommendations': (
[Row(item=0, rating=0.005226806737482548),
         Row(item=23, rating=0.0044402251951396465),
         Row(item=4, rating=0.004139747936278582)],)})

# now extract the values using the asDict method of the Row 
df_recommend['extracted_values'] = (
    df_recommend['recommendations']
    .apply(lambda recs: [list(x.asDict().values()) for x in recs])
)