这是我在 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 中做同样的事情?
我想将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) 我尝试在 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 分钟后又出现错误:
火花驱动器意外停止并正在重新启动。您的笔记本将自动重新连接。
我不明白为什么会这样。事实上,对于分布式计算来说,数据集相当小,集群大小应该足以处理这些数据。我应该检查什么来解决它?
我有一个迭代器对象<iterator object azure.core.paging.ItemPaged at 0x7fdb309c02b0>。当我第一次迭代它时(参见下面的代码),它会打印结果。但是,当我第二次执行此代码时,它什么也不打印。
for i, r in enumerate(result):
print(r)
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?我需要以某种方式重置枚举器吗?
我有 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 检查 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?
我有每小时的数据,我需要通过简单地重复这些值将其插值到 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()。
但是我怎样才能进行上面所示的简单插值呢?
我有以下 PySpark DataFrame:
id col1 col2
A 2 3
A 2 4
A 4 6
B 1 2
Run Code Online (Sandbox Code Playgroud)
我想堆叠col1并col2获得如下单列:
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) 我在 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) 我在 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 个数字而不是中位数。