【发布时间】:2018-04-18 10:10:07
【问题描述】:
我有一个列数据集,该数据集在同一月份的任何列的值都在增加,然后在下个月重置。
+----------+------+-----------+----+-----------+------------+
| Date|column|column_2 |co_3|column_4 |column_5 |
+----------+------+-----------+----+-----------+------------+
|2016-12-14| 0| 0| 0| 14| 0|
|2016-12-14| 0| 0| 0| 14| 0|
|2016-12-14| 0| 0| 0| 18| 0|
|2016-12-14| 0| 0| 0| 19| 0|
|2016-12-14| 0| 0| 0| 20| 0|
|2016-12-14| 0| 0| 0| 26| 0|
|2016-12-14| 0| 0| 0| 60| 0|
|2016-12-14| 0| 0| 0| 63| 0|
|2016-12-14| 0| 0| 0| 78| 0|
|2016-12-14| 0| 0| 0| 90| 0|
+----------+------+-----------+----+-----------+------------+
问题是他们的日期总是一样的,所以我想做一些计数,然后在我们接近不同的日子时重新计数。
我写了一个 Pandas UDF 函数:
@pandas_udf('int', PandasUDFType.SCALAR)
def get_counts_up(v):
prev = None
series = []
count = 0
for i in v:
if prev != i:
count = 0
prev = i
series.append(count)
count += 1
return pd.Series(series)
但是,输出似乎不是连续的:
sdf.filter(sdf.Date == "2016-12-14").sort("Date_Count").show()
+------------+----------+------+-----------+----+-----------+------------+---------+----------+--------+----------+-----+----------+
|Date_Convert| Date|column|column_____|col_|column_____|column______|Date_Year|Date_Month|Date_Day|Date_Epoch|count|Date_Count|
+------------+----------+------+-----------+----+-----------+------------+---------+----------+--------+----------+-----+----------+
| 2016-12-14|2016-12-14| 0| 0| 0| 14| 0| 2016| 12| 14|1481673600|14504| 0|
| 2016-12-14|2016-12-14| 0| 0| 0| 18| 0| 2016| 12| 14|1481673600|14504| 0|
| 2016-12-14|2016-12-14| 0| 0| 0| 14| 0| 2016| 12| 14|1481673600|14504| 1|
| 2016-12-14|2016-12-14| 0| 0| 0| 18| 0| 2016| 12| 14|1481673600|14504| 1|
| 2016-12-14|2016-12-14| 0| 0| 0| 18| 0| 2016| 12| 14|1481673600|14504| 2|
| 2016-12-14|2016-12-14| 0| 0| 0| 14| 0| 2016| 12| 14|1481673600|14504| 2|
| 2016-12-14|2016-12-14| 0| 0| 0| 14| 0| 2016| 12| 14|1481673600|14504| 3|
+------------+----------+------+-----------+----+-----------+------------+---------+----------+--------+----------+-----+----------+
这是意料之中的,因为我猜数据框被分成不同的机器(DataBrick 社区版中的一些机器),并且每个机器都有自己的数组要维护。
有没有办法进行连续计数?
【问题讨论】:
标签: python pandas apache-spark pyspark