如何根据另一列值将一列分成多个?

Posted

技术标签:

【中文标题】如何根据另一列值将一列分成多个?【英文标题】:How to divide a column into multiple, based on another column value? 【发布时间】:2019-09-06 18:01:05 【问题描述】:

我需要根据 python/pyspark 中的另一列值将一列拆分为 4。 我尝试根据代码过滤它并加入多个df。 有更好的方法吗?

Code   score ID

AAA     12  ABCD
BBB     14  ABCD
CCC     16  ABCD
DDD     67  ABCD
AAA     89  XYZ
BBB     65  XYZ
CCC     19  XYZ
DDD     56  XYZ


ID          score_AAA   score_BBB   score_CCC   score_DDD

ABCD            12          14      16              67
XYZ             89          65      19              56

【问题讨论】:

如果您不发布您的“当前”方式,有人怎么能提出“更好”的方式?你能展示一下你试过的代码吗? 您想要 pandas 答案还是 sparksql 答案?请查看How to Ask How to pivot Spark DataFrame?的可能重复 【参考方案1】:

使用pivot:

df = df.pivot(index='ID', columns='Code')
df.columns = df.columns.get_level_values(0) + '_' + df.columns.get_level_values(1)

结果:

      score_AAA  score_BBB  score_CCC  score_DDD
ID                                              
ABCD         12         14         16         67
XYZ          89         65         19         56

【讨论】:

@harvpan :我提到使用“过滤器”并形成多个数据帧并执行连接.. @rd90080 如果此答案有帮助,请将其标记为已接受的解决方案。

以上是关于如何根据另一列值将一列分成多个?的主要内容,如果未能解决你的问题,请参考以下文章

sql一列有多值查询,根据多个只查询我想要的数据

mysql如何根据一列值更新另一列的值?

DB2 将一列值复制到另一列

根据一列值将 data.frame 一分为二

需要根据表中的唯一值将一列分解为多列?

如何在条件中将一列值替换为另一列值[重复]