首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何用colum值在struct中更改df列名

如何用colum值在struct中更改df列名
EN

Stack Overflow用户
提问于 2021-07-29 12:28:50
回答 1查看 75关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.withColumn("storeInfo", struct($"store", struct($"inhand", $"storeQuantity")))
      .groupBy("sku").agg(collect_list("storeInfo").as("info"))
      .show(false)

+---+---------------------------------------------------+
|sku|info                                               |
+---+---------------------------------------------------+
|1  |[{2222, {3, 34}}, {3333, {5, 45}}]                 |
|2  |[{4444, {5, 56}}, {5555, {6, 67}}, {6666, {7, 67}}]|
+---+---------------------------------------------------+

当我把它送到couchbase的时候

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "SKU": "1",
  "info": [
    {
      "col2": {
        "inhand": "3",
        "storeQuantity": "34"
      },
      "Store": "2222"
    },
    {
      "col2": {
        "inhand": "5",
        "storeQuantity": "45"
      },
      "Store": "3333"
    }}

]}

我们可以用值重命名col2为存储值吗?我想让它看起来像下面的样子。因此,每个结构的关键都是存储价值的价值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "SKU": "1",
  "info": [
    {
      "2222": {
        "inhand": "3",
        "storeQuantity": "34"
      },
      "Store": "2222"
    },
    {
      "3333": {
        "inhand": "5",
        "storeQuantity": "45"
      },
      "Store": "3333"
    }}

]}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-30 01:57:34

简单地说,我们不能按您的要求构造一个列。两个限制:

  1. -- struct类型的字段名必须是固定的,我们可以将'col2‘改为另一个名称(例如。(演示1中的“fixedFieldName”),但它不能是动态的(类似于

类字段名)

  1. key of map类型可以是动态的,但是mapvalue必须是相同的类型,请参阅演示2中的异常。

也许您应该更改模式,请参阅演示1、3的输出。

演示1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.withColumn(
      "storeInfo", struct($"store", struct($"inhand", $"storeQuantity").as("fixedFieldName"))).
      groupBy("sku").agg(collect_list("storeInfo").as("info")).
      toJSON.show(false)
// output:
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//|value                                                                                                                                                                                              |
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//|{"sku":1,"info":[{"store":2222,"fixedFieldName":{"inhand":3,"storeQuantity":34}},{"store":3333,"fixedFieldName":{"inhand":5,"storeQuantity":45}}]}                                                           |
//|{"sku":2,"info":[{"store":4444,"fixedFieldName":{"inhand":5,"storeQuantity":56}},{"store":5555,"fixedFieldName":{"inhand":6,"storeQuantity":67}},{"store":6666,"fixedFieldName":{"inhand":7,"storeQuantity":67}}]}|
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

演示2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.withColumn(
      "storeInfo",
      map($"store", struct($"inhand", $"storeQuantity"), lit("Store"), $"store")).
      groupBy("sku").agg(collect_list("storeInfo").as("info")).
    toJSON.show(false)
// output exception:
// The given values of function map should all be the same type, but they are [struct<inhand:int,storeQuantity:int>, int]

演示3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.withColumn(
      "storeInfo",
      map($"store", struct($"inhand", $"storeQuantity"))).
      groupBy("sku").agg(collect_list("storeInfo").as("info")).
      toJSON.show(false)
//+---------------------------------------------------------------------------------------------------------------------------------------------+
//|value                                                                                                                                        |
//+---------------------------------------------------------------------------------------------------------------------------------------------+
//|{"sku":1,"info":[{"2222":{"inhand":3,"storeQuantity":34}},{"3333":{"inhand":5,"storeQuantity":45}}]}                                         |
//|{"sku":2,"info":[{"4444":{"inhand":5,"storeQuantity":56}},{"5555":{"inhand":6,"storeQuantity":67}},{"6666":{"inhand":7,"storeQuantity":67}}]}|
//+---------------------------------------------------------------------------------------------------------------------------------------------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68582447

复制
相关文章
特征工程-使用随机森林填补缺失值
特征工程在传统的机器学习中是非常重要的一个步骤,我们对机器学习算法的优化通常是有限的。如果在完成任务时发现不管怎么优化算法得到的结果都不满意,这个时候就可以考虑回头在做一下特征工程。
ZackSock
2021/12/30
1.7K1
pandas中 df[‘X‘]和df[[‘X‘]]的不同
df = pd.DataFrame({‘X’: [1, 2, 7, 5, 10], ‘Y’: [4, 3, 8, 2, 9]})
Twcat_tree
2022/12/05
1.7K0
pandas中 df[‘X‘]和df[[‘X‘]]的不同
webpack 中的 hash 值有何用处?
使用 webpack 等打包器进行打包时,每个资源都可以生成一个带有 hash 的路径,如 main.071b73.js。
山月
2022/11/02
1.2K0
webpack 中的 hash 值有何用处?
结构struct(值类型)在实际应用要注意的二点:
.Net中的数据类型大致可以分为二类:一类是值类型,一类是引用类型;结构(struct)是值类型,从性能上考虑值类型更有优势(关于值类型与引用类型的详细讨论不在本文范围内,大家可以去查阅相关资料).对于一些特定场合:比如仅需要存储数据,不需要体现具体方法的时候,建议大家用struct来代替class,但在使用过程中,有几个容易被忽视的细节. 1.使用struct存储数据做为数据源,与数据显示控件绑定时: 代码如下: Code protected void Page_Load(object sender, 
菩提树下的杨过
2018/01/22
9540
python中的struct
我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组,字典。但是C语言中有些字节型的变量,在python中该如何实现呢?这点颇为重要,特别是要在网络上进行数据传输的话。
py3study
2020/01/10
5340
PySpark 数据类型定义 StructType & StructField
PySpark StructType 和 StructField 类用于以编程方式指定 DataFrame 的schema并创建复杂的列,如嵌套结构、数组和映射列。StructType是StructField的集合,它定义了列名、列数据类型、布尔值以指定字段是否可以为空以及元数据。
数据STUDIO
2023/09/04
1.4K0
PySpark 数据类型定义 StructType & StructField
Android – 在Gradle中更改APK文件名
默认情况下,Android Studio中的Gradle构建命名为.apk文件app-release.apk。对应用程序build.gradle文件进行了一些小的更改,可以将.apk名称更改为<app name>-release-<version>.apk。 需要在app的目录下面修改build.gradle文件。 第一步是将project.archivesBaseName设置为您的应用程序名称。 android { compileSdkVersion 25 buildToolsVersio
code_horse
2018/07/02
2.9K0
Python中struct.pack()和struct.unpack()用法
python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~。一般输入的渠道来源于文件或者网络的二进制流。
周小董
2019/03/25
16.4K2
Python中struct.pack()和struct.unpack()用法
2023.4生信马拉松day3-数据结构
约等于表格 但是:列有要求(同一列只允许同一种数据类型);不是文件(可以导出来成为一个文件);
清南
2023/04/15
1.4K0
resultset类所有方法_resultset获取列名,和对应值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
7930
context.Context是做为参数传递还是存储在struct中?
在很多的API接口中,我们发现函数或方法的第一个参数往往是context.Context。Context在进程通信之间提供了取消、超时以及父子进程之间传递数据的方法。那我们在编码实践中是应该将Context存储于struct中还是以参数的方式在函数或方法直接传递呢?
Go学堂
2023/01/31
9870
在Unity场景中更改天空盒的步骤
一、介绍 目的:在Unity场景中制作一个天空盒。 软件环境:Unity 2017.3.0f3,VS2013。 参考 skybox  二、自制一个天空盒 1,创建一个材质material 2,更改属性
Zoctopus
2018/06/04
8.3K0
如何用OpenCV在Python中实现人脸检测
本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算法。同时还将添加一些功能,以同时检测多个面部的眼睛和嘴巴。本文介绍了人脸检测的最基本实现,包括级联分类器、HOG 窗口和深度学习 CNN。
小小詹同学
2019/06/03
1.5K0
如何用OpenCV在Python中实现人脸检测
https://github.com/maelfabien/Machine_Learning_Tutorials
机器之心
2019/05/30
1.5K0
struct 与 typedef struct
1. 基本解释   typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。   在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。   至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。 2. typedef & 结构的问题   当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含
猿人谷
2018/01/17
1.3K0
在Pandas中更改列的数据类型【方法总结】
有什么方法可以将列转换为适当的类型?例如,上面的例子,如何将列2和3转为浮点数?有没有办法将数据转换为DataFrame格式时指定类型?或者是创建DataFrame,然后通过某种方法更改每列的类型?理想情况下,希望以动态的方式做到这一点,因为可以有数百个列,明确指定哪些列是哪种类型太麻烦。可以假定每列都包含相同类型的值。
kirin
2021/04/19
20.4K0
在Pandas中更改列的数据类型【方法总结】
struct和typedef struct
typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到。 比如: typedef int DataType; 给整型int起了一个新名字DataType,以后用DataType就如同int一样。 分三块来讲述:   1 首先://注意在C和C++里不同     在C中定义一个结构体类型要用typedef:     typedef struct Student     {     int a;     }Stu;     于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)     这里的Stu实际上就是struct Student的别名。Stu==struct Student     另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)     typedef struct     {     int a;     }Stu;     但在c++里很简单,直接     struct Student     {     int a;     };         于是就定义了结构体类型Student,声明变量时直接Student stu2;
谙忆
2021/01/19
6360
go 中 struct 是否可以比较?
今天来水一篇,最近比较忙,一直没有时间写 go 相关的,今天从一个小问题入手,来说说 struct 的比较问题。
LinkinStar
2022/09/01
8430
[Office] 在Excel中,如何根据值求出其在表中的坐标
在使用excel的过程中,我们知道,根据一个坐标我们很容易直接找到当前坐标的值,但是如果知道一个坐标里的值,反过来求该点的坐标的话,据我所知,excel没有提供现成的函数供使用,所以需要自己用VBA编写函数使用 (代码来自互联网)
轻舞飞扬SR
2021/02/24
8.8K0
点击加载更多

相似问题

如何在列表中更改df列名

20

如何用列名更改表的值

30

在struct的方法中更改struct的指针值

310

在colum中替换值

13

在Pandas df行中查找值并返回列名

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文