小编Car*_*llo的帖子

GroupBy和concat数组列pyspark

我有这个数据框

df = sc.parallelize([(1, [1, 2, 3]), (1, [4, 5, 6]) , (2,[2]),(2,[3])]).toDF(["store", "values"])

+-----+---------+
|store|   values|
+-----+---------+
|    1|[1, 2, 3]|
|    1|[4, 5, 6]|
|    2|      [2]|
|    2|      [3]|
+-----+---------+
Run Code Online (Sandbox Code Playgroud)

我想转换成以下df:

+-----+------------------+
|store|      values      |
+-----+------------------+
|    1|[1, 2, 3, 4, 5, 6]|
|    2|            [2, 3]|
+-----+------------------+
Run Code Online (Sandbox Code Playgroud)

我这样做了:

from  pyspark.sql import functions as F
df.groupBy("store").agg(F.collect_list("values"))
Run Code Online (Sandbox Code Playgroud)

但解决方案有这个 WrappedArrays

+-----+----------------------------------------------+
|store|collect_list(values)                          |
+-----+----------------------------------------------+
|1    |[WrappedArray(1, 2, 3), WrappedArray(4, 5, 6)]|
|2    |[WrappedArray(2), WrappedArray(3)]            |
+-----+----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

有没有办法将其转换WrappedArrays为连续数组?或者我可以采用不同的方式吗? …

apache-spark-sql pyspark

12
推荐指数
4
解决办法
7565
查看次数

计算新列作为其他列pandas的平均值

我有一个这样的数据框:

我想计算新的列日的平均值salary_1,salary_2salary_3.

df = pd.DataFrame({'salary_1':[230,345,222],'salary_2':[235,375,292],'salary_3':[210,385,260]})

      salary_1     salary_2    salary_3
0        230           235        210
1        345           375        385
2        222           292        260
Run Code Online (Sandbox Code Playgroud)

我怎样才能以最有效的方式在熊猫中做到这一点?实际上我有更多列,我不想一个一个地写这个.

像这样的东西:

      salary_1     salary_2    salary_3     salary_mean
0        230           235        210     (230+235+210)/3
1        345           375        385       ...
2        222           292        260       ...
Run Code Online (Sandbox Code Playgroud)

谢谢!

python dataframe pandas

11
推荐指数
2
解决办法
2万
查看次数

ArrayColumn Pyspark 上的计数器函数

从这个数据框

+-----+-----------------+
|store|     values      |
+-----+-----------------+
|    1|[1, 2, 3,4, 5, 6]|
|    2|            [2,3]|
+-----+-----------------+
Run Code Online (Sandbox Code Playgroud)

我想应用这个Counter函数来得到这个:

+-----+------------------------------+
|store|     values                   |
+-----+------------------------------+
|    1|{1:1, 2:1, 3:1, 4:1, 5:1, 6:1}|
|    2|{2:1, 3:1}                    |
+-----+------------------------------+
Run Code Online (Sandbox Code Playgroud)

我使用另一个问题的答案得到了这个数据框:

GroupBy 和 concat 数组列 pyspark

所以我尝试修改答案中的代码,如下所示:

选项1:

+-----+-----------------+
|store|     values      |
+-----+-----------------+
|    1|[1, 2, 3,4, 5, 6]|
|    2|            [2,3]|
+-----+-----------------+
Run Code Online (Sandbox Code Playgroud)

选项 2:

+-----+------------------------------+
|store|     values                   |
+-----+------------------------------+
|    1|{1:1, 2:1, 3:1, 4:1, 5:1, 6:1}|
|    2|{2:1, 3:1}                    |
+-----+------------------------------+
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

有谁知道我该怎么做? …

counter apache-spark apache-spark-sql pyspark

3
推荐指数
1
解决办法
1534
查看次数