使用包含列的数据框,列中的值是列表,
id | values
1 | ['good','good','good','bad','bad','good','good']
2 | ['bad','badd','good','bad',Null,'good','bad']
....
Run Code Online (Sandbox Code Playgroud)
如何获得列表中最常显示的字符串?预期输出:
id | most_frequent
1 | 'good'
2 | 'bad'
....
Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据框中的列值列表提取到列表中
+------+----------+------------+
|sno_id|updt_dt |process_flag|
+------+----------+------------+
| 123 |01-01-2020| Y |
+------+----------+------------+
| 234 |01-01-2020| Y |
+------+----------+------------+
| 512 |01-01-2020| Y |
+------+----------+------------+
| 111 |01-01-2020| Y |
+------+----------+------------+
Run Code Online (Sandbox Code Playgroud)
输出应该是 sno_id ['123','234','512','111'] 然后我需要迭代列表以对每个列表值运行一些逻辑。我目前正在使用 HiveWarehouseSession 通过使用 hive.executeQuery(query) 从 hive 表中获取数据到 Dataframe
感谢你的帮助。
我有一个 pyspark 数据框,下面是示例行。我试图在 10 分钟内获得最大平均值。我正在尝试使用 Window 函数,但无法实现结果。
这是我的数据框,其中包含 30 分钟的随机数据。我希望输出 3 行,每 10 分钟输出 1 行。
+-------------------+---------+
| event_time|avg_value|
+-------------------+---------+
|2019-12-29 00:01:00| 9.5|
|2019-12-29 00:02:00| 9.0|
|2019-12-29 00:04:00| 8.0|
|2019-12-29 00:06:00| 21.0|
|2019-12-29 00:08:00| 7.0|
|2019-12-29 00:11:00| 8.5|
|2019-12-29 00:12:00| 11.5|
|2019-12-29 00:14:00| 8.0|
|2019-12-29 00:16:00| 31.0|
|2019-12-29 00:18:00| 8.0|
|2019-12-29 00:21:00| 8.0|
|2019-12-29 00:22:00| 16.5|
|2019-12-29 00:24:00| 7.0|
|2019-12-29 00:26:00| 14.0|
|2019-12-29 00:28:00| 7.0|
+-------------------+---------+
Run Code Online (Sandbox Code Playgroud)
我正在使用下面的代码
window_spec = Window.partitionBy('event_time').orderBy('event_time').rangeBetween(-60*10,0)
new_df = data.withColumn('rank', rank().over(window_spec))
new_df.show()
Run Code Online (Sandbox Code Playgroud)
但这段代码给了我以下错误:
pyspark.sql.utils.AnalysisException: 'Window Frame specifiedwindowframe(RangeFrame, …Run Code Online (Sandbox Code Playgroud) 我正在使用 pyspark 数据帧从每行的数组中寻找不同的计数:输入:col1 [1,1,1] [3,4,5] [1,2,1,2]
output:
1
3
2
I used below code but it is giving me the length of an array:
output:
3
3
4
please help me how do i achieve this using python pyspark dataframe.
slen = udf(lambda s: len(s), IntegerType())
count = Df.withColumn("Count", slen(df.col1))
count.show()
Thanks in advanced !
Run Code Online (Sandbox Code Playgroud)