当前位置: 首页 > 知识库问答 >
问题:

用pivot旋转单行Spark数据帧

穆城
2023-03-14

我是新的火花,我想,使用scala,枢轴数据帧的单行如下:

+--------------+-------+-------+-------+-------+-------+-------+-------+
|       Country| 3/7/20| 3/8/20| 3/9/20|3/10/20|3/11/20|3/12/20|3/13/20|
+--------------+-------+-------+-------+-------+-------+-------+-------+
|         Japan|      0|      4|     10|     18|     27|     31|     35|
+--------------+-------+-------+-------+-------+-------+-------+-------+

我的旋转数据帧应该如下所示

+--------------+-------+
|       Country| Japan |
+--------------+-------+
|        3/7/20|      0|
+--------------+-------+ 
|        3/8/20|      4|
+--------------+-------+
|        3/9/20|     10|
+--------------+-------+
|       3/10/20|     18|
+--------------+-------+
|           ...|    ...|
+--------------+-------+

我尝试使用以下方法,但我不确定我是否正确地得到了聚合表达式:

val pivoted = df.groupBy("Country").pivot("Country", Seq("Japan")).agg(col("Country"))

共有1个答案

谭嘉歆
2023-03-14

试试这个-

使用堆栈

 df2.show(false)
    df2.printSchema()
    /**
      * +-------+------+------+------+-------+-------+-------+-------+
      * |Country|3/7/20|3/8/20|3/9/20|3/10/20|3/11/20|3/12/20|3/13/20|
      * +-------+------+------+------+-------+-------+-------+-------+
      * |Japan  |0     |4     |10    |18     |27     |31     |35     |
      * +-------+------+------+------+-------+-------+-------+-------+
      *
      * root
      * |-- Country: string (nullable = true)
      * |-- 3/7/20: integer (nullable = true)
      * |-- 3/8/20: integer (nullable = true)
      * |-- 3/9/20: integer (nullable = true)
      * |-- 3/10/20: integer (nullable = true)
      * |-- 3/11/20: integer (nullable = true)
      * |-- 3/12/20: integer (nullable = true)
      * |-- 3/13/20: integer (nullable = true)
      */
    val stringCol = df2.columns.map(c => s"'$c', cast(`$c` as string)").mkString(", ")
    val processedDF = df2.selectExpr(s"stack(${df2.columns.length}, $stringCol) as (col_1, col_2)")
    processedDF.show(false)
    /**
      * +-------+-----+
      * |col_1  |col_2|
      * +-------+-----+
      * |Country|Japan|
      * |3/7/20 |0    |
      * |3/8/20 |4    |
      * |3/9/20 |10   |
      * |3/10/20|18   |
      * |3/11/20|27   |
      * |3/12/20|31   |
      * |3/13/20|35   |
      * +-------+-----+
      */
 类似资料:
  • 问题内容: 我有以下格式的数据(RDD或Spark DataFrame): 我想做的是“重塑”数据,将“国家/地区”中的某些行(特别是美国,英国和加拿大)转换为列: 本质上,我需要一些与Python工作流程类似的东西: 我的数据集很大,因此我无法真正将数据吸收到内存中以在Python本身中进行重塑。有没有办法在映射RDD或Spark DataFrame时将Python转换为可调用函数?任何帮助,将

  • 实现类似转盘电话中拨号转盘的旋转菜单效果。滑动菜单,菜单进行转动,转动的过程中,处于最前面的按钮按钮慢慢变大,处于后端的按钮变小。同样,点击转盘菜单上某个按钮,被点击的按钮会慢慢被转到最前面。由于转动的过程中,按钮会有大变小或者由小变大,所以这个动画有3D的效果。 [Code4App.com]

  • 我在熊猫的旋转上有点困难。我正在处理的(日期、位置、数据)如下所示: 基本上,我试图在位置上进行枢轴,以获得如下的数据frame: 因为我有一个#数据列,我想要透视(不想把每个列都作为参数列出)。我相信在默认情况下,pivot将透视DataFrame中的其余列。谢了。

  • 本文向大家介绍sql server通过pivot对数据进行行列转换的方法,包括了sql server通过pivot对数据进行行列转换的方法的使用技巧和注意事项,需要的朋友参考一下 脚本: 脚本运行结果: 总结 到此这篇关于sql server通过pivot对数据进行行列转换的方法的文章就介绍到这了,更多相关sql server pivot行列转换内容请搜索呐喊教程以前的文章或继续浏览下面的相关文章

  • 我试图通过DF透视数据,但是我对如何继续下面的操作感到困惑。 以上是我的原始数据,我希望我的数据帧枢轴有状态列的总数,如下所示。 MP已关闭已解决分配 然而,我不确定如何在pandas中实现,因为pivot只反映状态的总计数,而不是每个值。

  • 我有一个如下的CSV文件。 我想把这个转化成下面。 基本上,我想在输出数据帧中创建一个名为idx的新列,该列将填充与键=idx,value=“n”后面的行相同的值“n”。