Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于日期的列顺序整数Spark_Python_Apache Spark_Pyspark_Spark Dataframe - Fatal编程技术网

Python 基于日期的列顺序整数Spark

Python 基于日期的列顺序整数Spark,python,apache-spark,pyspark,spark-dataframe,Python,Apache Spark,Pyspark,Spark Dataframe,我有一个数据集,有一个每天生产一种产品的公司。我想在数据框中添加一列,该列将根据该公司的日期按顺序编号 例如 Acme Product1 1 1/1/2000 5 Acme Product1 1/2/2000 7 Acme Product2 2000年3月1日9 Acme Product2 3/2/2000 4 公司2产品X 4/1/2015 6 公司2产品X 4/2/2015 3 我想添加一个新的列,如: Acme Product1 1/1/2000 5 1 Acme Product1 1/2

我有一个数据集,有一个每天生产一种产品的公司。我想在数据框中添加一列,该列将根据该公司的日期按顺序编号

例如
Acme Product1 1 1/1/2000 5
Acme Product1 1/2/2000 7
Acme Product2 2000年3月1日9
Acme Product2 3/2/2000 4
公司2产品X 4/1/2015 6
公司2产品X 4/2/2015 3

我想添加一个新的列,如:
Acme Product1 1/1/2000 5 1
Acme Product1 1/2/2000 7 2
Acme Product2 3/1/2000 9 1
Acme Product2 3/2/2000 4 2
公司2产品X 4/1/2015 6 1
公司2产品X 4/2/2015 3 2
公司2产品X 4/2/2015 2 3


这一切都是为了让我能够根据新专栏比较公司及其产品。因此,无论日期如何,他们都会在一天内生产一款产品。

您可以使用pyspark.sql函数的窗口功能
行数
(别名
rowNumber
适用于
spark您应该尝试这样做,并在遇到问题或解决方案不起作用时询问。这是正确的答案,它不应该被关闭。这起作用了……谢谢!我只是在学习,所以我不确定从哪里开始,我尝试的每件事都给出了错误。起初,我得到了一些注释“'F'未定义”,因此在研究后,我不得不添加“从pyspark.sql导入函数为F”和“从pyspark.sql.window导入窗口”。然后我得到一些关于rowNumber模块的信息,但没有找到。因此,再次研究后,我不得不改为F.row_number()。
myDF = spark.createDataFrame(
    sc.parallelize([["Acme", "Product1", "1/1/2000", 5],
        ["Acme", "Product1", "1/2/2000", 7],
        ["Acme", "Product2", "3/1/2000", 9],
        ["Acme", "Product2", "3/2/2000", 4],
        ["Company2", "ProductX", "4/1/2015", 6],
        ["Company2", "ProductX", "4/2/2015", 3], 
        ["Company2", "ProductX", "4/2/2015", 2]]), 
    ["company", "product", "date", "nb"])

    +--------+--------+--------+---+
    | company| product|    date| nb|
    +--------+--------+--------+---+
    |    Acme|Product1|1/1/2000|  5|
    |    Acme|Product1|1/2/2000|  7|
    |    Acme|Product2|3/1/2000|  9|
    |    Acme|Product2|3/2/2000|  4|
    |Company2|ProductX|4/1/2015|  6|
    |Company2|ProductX|4/2/2015|  3|
    |Company2|ProductX|4/2/2015|  2|
    +--------+--------+--------+---+
from pyspark.sql.window import Window
import pyspark.sql.functions as F

resultDF = myDF.withColumn(
    "rowNum", 
    F.row_number().over(Window.partitionBy("company", "product")
                           .orderBy("date")))

    +--------+--------+--------+---+------+
    | company| product|    date| nb|rowNum|
    +--------+--------+--------+---+------+
    |Company2|ProductX|4/1/2015|  6|     1|
    |Company2|ProductX|4/2/2015|  3|     2|
    |Company2|ProductX|4/2/2015|  2|     3|
    |    Acme|Product2|3/1/2000|  9|     1|
    |    Acme|Product2|3/2/2000|  4|     2|
    |    Acme|Product1|1/1/2000|  5|     1|
    |    Acme|Product1|1/2/2000|  7|     2|
    +--------+--------+--------+---+------+