PySpark Dataframe-通过

时间:2018-09-15 10:04:10

标签: python apache-spark pyspark apache-spark-sql

让我们假设我们有这样的数据(按时间排序),并在Pyspark数据框中为类创建了虚拟列:

ID  class   e_TYPE_B    e_TYPE_C    e_TYPE_L    e_TYPE_A    e_TYPE_E    e_TYPE_G
1   G           0           0           0           0           0           1
1   B           1           0           0           0           0           0
1   B           1           0           0           0           0           0
2   E           0           0           0           0           1           0
2   E           0           0           0           0           1           0
2   C           0           1           0           0           0           0
2   C           0           1           0           0           0           0
2   E           0           0           0           0           1           0
2   E           0           0           0           0           1           0
3   L           0           0           1           0           0           0
3   L           0           0           1           0           0           0
3   B           1           0           0           0           0           0
3   E           0           0           0           0           1           0
4   A           0           0           0           1           0           0
4   A           0           0           0           1           0           0
5   B           1           0           0           0           0           0
5   B           1           0           0           0           0           0
5   A           0           0           0           1           0           0
5   A           0           0           0           1           0           0

现在,我试图找出从一类转移到另一类的ID的数量,它可以是连续的,也可以是介于两者之间的其他一些类。应该根据ID从上到下为每个类创建关系。

例如

  • ID 1从G到B,然后将1添加到G到B的计数器,
  • ID 2从E到C,然后应在E到C计数器中添加1,
  • ID 2从C到E,然后将1添加到C到E计数器,
  • ID 3从L到B,然后应在L到B计数器中添加1,
  • ID 3从B到E,然后将1添加到B到E计数器,
  • ID 3也从L到E,然后将1添加到L到E计数器,
  • ID 4仅具有一个类别,因此应将其丢弃

我想到了使用Window操作,该操作应该在ID上进行分区,但是如何迭代该分区以计算上述类关系的数量却使我很努力。

请为此提供解决方案/代码段。

谢谢。

0 个答案:

没有答案