gpt4 book ai didi

python - 在 Spark 数据帧转置期间。列名称未转换为行标题

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:01 25 4
gpt4 key购买 nike

我有 Dataframe,将“tbl”命名为,

summary col1    col2    col3        col200
count 20000 20000 20000 20000
mean 3.02 789.83 8379.02 20.03
std dev 1.02 2.03 0.8 0.56

我使用下面的代码进行了转置,

header = [i[0] for i in tbl.select("summary").rdd.map(tuple).collect()]
tt = tbl.select([c for c in tbl.columns if c not in ["summary"]])
rtt = tt.rdd.map(tuple)
rtt1 = rtt.zipWithIndex().flatMap(lambda (x,i): [(i,j,e) for (j,e) in enumerate(x)])
rtt2 = rtt1.map(lambda(i,j,e):(j,(i,e))).groupByKey().sortByKey()
rtt3 = rtt2.map(lambda (i,x):sorted(list(x), cmp=lambda(i1,e1),(i2,e2) : cmp(i1,i2)))

rtt4 = rtt3.map(lambda x: map(lambda (i,y):y, x))

问题:

在转置时,我能够生成诸如以下的列:

count   Mean    Std dev
20000 3.02 1.02
20000 789.83 2.03

但是此转换缺少列标题名称来标识转置针对哪个变量。我有“3 X 42000”维度的数据框,并且所有列都是唯一的,正在寻找方法来确定如何在转置时将列标题添加为行标题。

最佳答案

使用 Pandas 怎么样:

df = sc.parallelize([(-1.0, 2.0, -3.0), (4.4, 5.1, -6.4)]).toDF()

pdf = df.describe().toPandas()
pdf.T[1:].rename(columns=pdf.T.iloc[0])

count mean stddev min max
_1 2 1.7000000000000002 3.818376618407357 -1.0 4.4
_2 2 3.55 2.192031021678297 2.0 5.1
_3 2 -4.7 2.4041630560342617 -6.4 -3.0

这并不像您需要 Spark 来处理 120,000 个值......

关于python - 在 Spark 数据帧转置期间。列名称未转换为行标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43451818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com