小编Flu*_*uxy的帖子

如何计算 PySpark 中行之间的差异?

这是我在 PySpark 中的数据框:

utc_timestamp               data    feed
2015-10-13 11:00:00+00:00   1       A
2015-10-13 12:00:00+00:00   5       A
2015-10-13 13:00:00+00:00   6       A
2015-10-13 14:00:00+00:00   10      B
2015-10-13 15:00:00+00:00   11      B
Run Code Online (Sandbox Code Playgroud)

的值data是累积的。

我想得到这个结果(连续行之间的差异,按 分组feed):

utc_timestamp               data    feed
2015-10-13 11:00:00+00:00   1       A
2015-10-13 12:00:00+00:00   4       A
2015-10-13 13:00:00+00:00   1       A  
2015-10-13 14:00:00+00:00   10      B
2015-10-13 15:00:00+00:00   1       B
Run Code Online (Sandbox Code Playgroud)

我会这样做pandas

df["data"] -= (df.groupby("feed")["data"].shift(fill_value=0))
Run Code Online (Sandbox Code Playgroud)

我如何在 PySpark 中做同样的事情?

python apache-spark apache-spark-sql pyspark

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

在 PySpark 中的多列上应用 MinMaxScaler

我想将MinMaxScalarPySpark 应用于 PySpark 数据框的多列df。到目前为止,我只知道如何将它应用于单个列,例如x.

from pyspark.ml.feature import MinMaxScaler

pdf = pd.DataFrame({'x':range(3), 'y':[1,2,5], 'z':[100,200,1000]})
df = spark.createDataFrame(pdf)

scaler = MinMaxScaler(inputCol="x", outputCol="x")
scalerModel = scaler.fit(df)
scaledData = scalerModel.transform(df)
Run Code Online (Sandbox Code Playgroud)

如果我有 100 列怎么办?有没有办法对 PySpark 中的许多列进行最小-最大缩放?

更新:

另外,如何应用MinMaxScalar整数或双精度值?它引发以下错误:

java.lang.IllegalArgumentException: requirement failed: Column length must be of type struct<type:tinyint,size:int,indices:array<int>,values:array<double>> but was actually int.
Run Code Online (Sandbox Code Playgroud)

python apache-spark-sql pyspark

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

火花驱动器意外停止并正在重新启动。您的笔记本将自动重新连接

我尝试在 Databricks 中分析 500Mb 的数据集。这些数据存储在 Excel 文件中。我做的第一件事是从 Maven 安装 Spark Excel 包com.crealytics.spark.excel(最新版本 - 0.11.1)。

这些是集群的参数:

然后我在 Scala 笔记本中执行了以下代码:

val df_spc = spark.read
          .format("com.crealytics.spark.excel")
          .option("useHeader", "true")
          .load("dbfs:/FileStore/tables/test.xlsx")
Run Code Online (Sandbox Code Playgroud)

但我收到了有关 Java 堆大小的错误,然后收到另一个错误“java.io.IOException:超出了 GC 开销限制”。然后我再次执行这段代码,运行 5 分钟后又出现错误:

火花驱动器意外停止并正在重新启动。您的笔记本将自动重新连接。

我不明白为什么会这样。事实上,对于分布式计算来说,数据集相当小,集群大小应该足以处理这些数据。我应该检查什么来解决它?

excel scala apache-spark azure-databricks

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

如何迭代 azure.core.paging.ItemPaged?

我有一个迭代器对象<iterator object azure.core.paging.ItemPaged at 0x7fdb309c02b0>。当我第一次迭代它时(参见下面的代码),它会打印结果。但是,当我第二次执行此代码时,它什么也不打印。

for i, r in enumerate(result):
   print(r)
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?我需要以某种方式重置枚举器吗?

python enums iterator enumerate azure

6
推荐指数
1
解决办法
1万
查看次数

如何显示行中具有不同值的列?

我有 2 行的 pandas DataFrame:

+---------+---------+-----------+------------+
|       ID|     Type|      Index|        Code|
+---------+---------+-----------+------------+
|111111111|       aa|          1|         XXX|
|111111111|       aa|       null|         XXX|
Run Code Online (Sandbox Code Playgroud)

如何显示行之间具有不同值的那些列df?(可能有超过 2 行)。

在上面显示的示例中,预期输出为Index,因为第一行等于Index1,第二行等于Indexnull。

python pandas

5
推荐指数
1
解决办法
2704
查看次数

检查Databricks中是否存在该路径

我尝试使用 Python 检查 Databricks 中是否存在该路径:

try:
  dirs = dbutils.fs.ls ("/my/path")
  pass
except IOError:
  print("The path does not exist")
Run Code Online (Sandbox Code Playgroud)

如果路径不存在,我希望该except语句执行。except但是,该try语句失败并出现错误,而不是语句:

java.io.FileNotFoundException: GET ...
ErrorMessage=The specified path does not exist.
Run Code Online (Sandbox Code Playgroud)

如何正确捕捉FileNotFoundException

python databricks azure-databricks dbutils

5
推荐指数
1
解决办法
1万
查看次数

如何通过复制值进行插值?

我有每小时的数据,我需要通过简单地重复这些值将其插值到 10 分钟的数据:

data=[('2014-02-24 16:00:00', 55)
,('2014-02-24 17:00:00', 40)
,('2014-02-24 18:00:00', 68)]

df=pd.DataFrame(data,columns=['DateTime','Value'])
Run Code Online (Sandbox Code Playgroud)

我需要得到以下结果:

DateTime                  Value
2014-02-24  16:00:00      55
2014-02-24  16:10:00      55
2014-02-24  16:20:00      55
...
2014-02-24  17:00:00      40
2014-02-24  17:10:00      40
2014-02-24  17:20:00      40
...
Run Code Online (Sandbox Code Playgroud)

我知道可以通过这种方式对数据进行重新采样minutes=df.resample('10Min',on='DateTime').mean()

但是我怎样才能进行上面所示的简单插值呢?

python pandas

4
推荐指数
1
解决办法
95
查看次数

如何在 PySpark 中将两列堆叠成一列?

我有以下 PySpark DataFrame:

id   col1   col2
A    2      3
A    2      4
A    4      6
B    1      2
Run Code Online (Sandbox Code Playgroud)

我想堆叠col1col2获得如下单列:

id   col3
A    2   
A    3
A    4
A    6
B    1
B    2
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

df = (
    sc.parallelize([
        (A, 2, 3), (A, 2, 4), (A, 4, 6),
        (B, 1, 2),
    ]).toDF(["id", "col1", "col2"])
)
Run Code Online (Sandbox Code Playgroud)

python pyspark pyspark-dataframes

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

如何回填 PySpark 中每个分区中的空值

我在 PySpark 中有以下 DataFrame:

Id      DateActual          DateStart               DateEnd                 SourceCode
107 2019-08-11 00:00:00     null                    null                    1111
107 2019-08-16 00:00:00     2019-08-11 00:00:00     2019-08-18 00:00:00     1111
128 2019-02-11 00:00:00     null                    null                    101
128 2019-02-13 00:00:00     2019-02-11 00:00:00     2019-02-18 00:00:00     168
128 2019-02-14 00:00:00     2019-02-13 00:00:00     2019-02-20 00:00:00     187
Run Code Online (Sandbox Code Playgroud)

我需要替换null值以获得以下结果:

Id      DateActual          DateStart               DateEnd                 SourceCode
107 2019-08-11 00:00:00     2019-08-11 00:00:00     2019-08-18 00:00:00     1111
107 2019-08-16 00:00:00     2019-08-11 00:00:00     2019-08-18 00:00:00     1111
128 2019-02-11 00:00:00     2019-02-11 00:00:00     2019-02-18 00:00:00     101
128 2019-02-13 00:00:00 …
Run Code Online (Sandbox Code Playgroud)

python pyspark pyspark-dataframes

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

如何获取矩阵中对角线的中值?

我在 pandas 中有以下矩阵:

import numpy as np
import pandas as pd

df_matrix = pd.DataFrame(np.random.random((10, 10)))
Run Code Online (Sandbox Code Playgroud)

我需要获得一个包含 10 个中值的向量,每条蓝线上有 1 个值,如下图所示:

在此输入图像描述

输出向量中的最后一个数字基本上是 1 个数字而不是中位数。

python numpy pandas

2
推荐指数
1
解决办法
110
查看次数