【发布时间】:2018-12-08 15:38:36
【问题描述】:
我不太清楚如何表达这个标题。 我有一个包含一列的数据框,其中每一行都包含一个令牌列表。我需要获取单词的频率,然后对它们进行排序以获得最频繁的单词。这是 DataFrame 架构的图像:https://i.stack.imgur.com/elkZz.png
使用标记器来获取标记数组。
What the array inside the Dataframe row looks like
现在我已经这样做了,当时“行”仅由一个包含大量单词的字符串组成,而不是在每个索引处包含单词的列表。
与:
frequency = dataframe.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
但是,我终其一生都无法弄清楚如何访问这些元素。上面的 lambda 表达式不起作用,因为它试图在列表中执行它。 '不可散列的类型:'list''
所以 tldr 中的问题:如何正确访问数组中的元素以计算数据框所有行中单词的频率?此外,我将如何将结果放入数组中?
【问题讨论】:
标签: python apache-spark dataframe pyspark