首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spark数据帧转置期间。列名未转换为行标题

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

Stack Overflow用户
提问于 2017-04-17 20:47:33
回答 1查看 572关注 0票数 1

我有数据帧,名字叫'tbl‘as,

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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))

问题:

在转置时,我能够生成列,例如,

代码语言:javascript
复制
count   Mean    Std dev
20000   3.02    1.02
20000   789.83  2.03

但此转换缺少列标题名称来标识转置用于哪个变量。我有'3 X 42000‘维度的Dataframe,并且所有的列都是唯一的,寻找方法来确定如何在转置时添加列标题作为行标题。

EN

回答 1

Stack Overflow用户

发布于 2017-04-17 21:00:37

使用Pandas怎么样:

代码语言:javascript
复制
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个值...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43451818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档