我有一个PySpark Dataframe和一个A字段,很少有依赖于A (A->B)和C字段的B字段,例如,我希望每个A都聚合这些字段:
A | B | C
----------
A | 1 | 6
A | 1 | 7
B | 2 | 8
B | 2 | 4
我希望按A分组,呈现任何B并在C上运行聚合(例如SUM)。
预期结果将是:
A | B | C
----------
A | 1 | 13
B | 2 | 12
就SQL而言,我会这样做:
SELECT A, COALESCE(B) as B, SUM(C) as C
FROM T
GROUP BY A
PySpark是如何做到这一
我有一个星火数据库,它看起来有点像这样:
id country date action
1 A 2019-01-01 suppress
1 A 2019-01-02 suppress
2 A 2019-01-03 bid-up
2 A 2019-01-04 bid-down
3 C 2019-01-01 no-action
3 C 2019-01-02 bid-up
4 D 2019-01-01 suppress
我希望通过将“action”列的唯一值按id、cou
如何才能按几个列进行分组,只针对列值中任意位置包含字符串的值?
例如,如果我想查看州和剧院名称,但只查看标题的计数或次数,因为其中的任何地方都有狗这个词,我如何才能对其进行筛选?
State | Theatre | Title | TicketPrice
NY B Dog in heaven 5.50
NJ C Basketball 3.33
NY B Cats 9.00
NY B Hair of Dog
我每年都会使用下面的代码来提高学生的年龄。目的是了解每年的学生总数。
from pyspark.sql.functions import col
import pyspark.sql.functions as fn
gr = Df2.groupby(['Year'])
df_grouped =
gr.agg(fn.count(col('Student_ID')).alias('total_student_by_year'))
我发现这么多ID被重复的问题,所以结果是错误的和巨大的。
我想按年增加学生人数,按年计算学生总数,避免重复使用ID。
我试图将四列(QBR、码、触地和截取)连接或组合到一个列中,并将它们按球衣编号分组,将sql函数作为pyspark中的f。下面列出了我试图使用的编码、实际数据和预期的数据结果。
import pyspark.sql.functions as f
from pyspark.sql.functions import concat, lit, col
df = df.groupby('Jersey Number).withColumn("joined", f.concat(f.col('QBR'), f.lit(','), f.col('
我现在有两个列表,一个是记录,一个是卡片。我试图将这两个列表加入到共享GUID中,然后按卡片的名称分组,以找到具有该名称的卡片总数。我只是不知道如何通过声明让这个小组发挥作用,有人有什么想法吗?
var values = (from r in records
join c in cards
on r.CardGUID equals c.GUID
orderby c.Name ascending
s
我已经为pyspark dataframe中的两个特性应用了groupby和计算标准差。 from pyspark.sql import functions as f
val1 = [('a',20,100),('a',100,100),('a',50,100),('b',0,100),('b',0,100),('c',0,0),('c',0,50),('c',0,100),('c',0,20)]
cols = ['group',
我有以下股票清单:
对于每一张图,我想按月中的日期分开,因为这是一张解释图:
通过这种分离,我可以执行每一天的累积收益,并将每个股票符号的最大和最小累积回报分开。
我正在从SO执行以下操作(例如来自另一个股票列表)::
data_dict = dict() # create an empty dict here
for k, df in df_dict.items():
df_dict[k]['Return %'] = df.iloc[:, 0].pct_change(-1)*100
# aggregate the max and min
我对pyspark还是个新手。我有10k文本数据集。我使用Minhash lsh创建了一个Jaccard距离。例如,我得到的输出
col1 col2 dist
A B 0.77
B C 0.56
C A 0.88
我想把这个转换成NxN矩阵格式。
A B C
A 0 0.77 0.88
B 0.77 0 0.56
C 0.88 0.56 0
有没有办法使用pyspark来创建它。我很感谢你的建议。
我有一个Spark (sdf),其中每一行都显示一个访问DataFrame的IP。我想要计算这个数据帧中不同的IP-URL对,最直接的解决方案是sdf.groupBy("ip", "url").count()。但是,由于数据帧有数十亿行,精确计数可能需要相当长的时间。我不是特别熟悉PySpark --我试着用.approx_count_distinct()替换.count(),这在语法上是不正确的。
我搜索"how to use .approx_count_distinct() with groupBy()“,找到了。然而,建议的解决方案(类似于:sdf
我有一个结构如下的数据集。这是一个示例,所以请想象一个包含许多序列的数据帧。有几件事要精确:time是降序的。created_at也是按降序排列的。当新的source或currency出现时,time和created_at都会重置。
index time app_v last source currency created_at
1 2019-10-23 3 4488 gol JPY 66
2 2019-10-23 29193 6687 gol JPY
我将字符串元素按列表中的第一个单词和字符串中的最后一个单词分组。我正在使用来自itertools的groupby来进行分组。对于最后一个词来说,这个过程似乎运行得很好,但是对于第一个单词,它似乎不起作用。
from itertools import groupby
model_eval_cols = ['MAD model meFuelFlowStar', 'MedAD model meFuelFlowStar', 'MAD model rpmStar', 'MedAD model rpmStar']
for k, v in
我想随机选择与"ID“列中的唯一值数目成比例的行,按列"Team”分组。此外,我只想检索8行总计。我有:
| ID | Team | Color |
| ----- | ----- | ------------ |
| 1 | A | Blue |
| 2 | B | Red |
| 2 | B | Green |
| 3 | A | Blue |
| 6 | C | Red |
| 1
我想按pyspark数据帧分组,并计算特定列的方差。对于一般人来说,这很容易,可以这样做
from pyspark.sql import functions as func
AVERAGES=df.groupby('country').agg(func.avg('clicks').alias('avg_clicks')).collect()
然而,对于方差,函数子模块中似乎没有任何聚合函数(我也想知道为什么,因为这是一个相当常见的操作)。