每日一题29:数据操作之数据重塑

一、每日一题

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| product_id  | int     |
| store1      | int     |
| store2      | int     |
| store3      | int     |
+-------------+---------+
在 SQL 中,这张表的主键是 product_id(产品Id)。
每行存储了这一产品在不同商店 store1, store2, store3 的价格。
如果这一产品在商店里没有出售,则值将为 null。

请你重构 Products 表,查询每个产品在不同商店的价格,使得输出的格式变为(product_id, store, price) 。如果这一产品在商店里没有出售,则不输出这一行。

输出结果表中的 顺序不作要求 。

查询输出格式请参考下面示例。

示例 1:

输入:
Products table:
+------------+--------+--------+--------+
| product_id | store1 | store2 | store3 |
+------------+--------+--------+--------+
| 0          | 95     | 100    | 105    |
| 1          | 70     | null   | 80     |
+------------+--------+--------+--------+
输出:
+------------+--------+-------+
| product_id | store  | price |
+------------+--------+-------+
| 0          | store1 | 95    |
| 0          | store2 | 100   |
| 0          | store3 | 105   |
| 1          | store1 | 70    |
| 1          | store3 | 80    |
+------------+--------+-------+
解释:
产品 0 在 store1、store2、store3 的价格分别为 95、100、105。
产品 1 在 store1、store3 的价格分别为 70、80。在 store2 无法买到。

解答:

# 该代码可直接运行
import pandas as pd# 创建示例 DataFrame
data = {'product_id': [0, 1],'store1': [95, 70],'store2': [100, None],'store3': [105, 80]}products_df = pd.DataFrame(data)# 使用melt函数将宽表格转换为长表格
melted_of = products_df.melt(id_vars='product_id', var_name='store', value_name='price')# 过滤掉price为null的行
result_df = melted_of.dropna(subset=['price'])# 重置索引以便更好地展示效果
result_df.reset_index(drop=True, inplace= True)# 打印结果 DataFrame
print(result_df)

题源:Leetcode

二、总结

本题考察数据重塑,需要知道melt的用法,详情使用方法之前有提到:

每日一题12:Pandas:数据重塑-融合

2024.6.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目3 构建移动电商服务器集群

项目引入 经过前期加班加点地忙碌,我们的网站顺利上线了!年中促销活动也如约而至,虽然公司全体对这次活动进行多方面地准备和“布防”,可是意外还是发生了。就在促销优惠购物活动的当天,猛然增加的用户访问量直接导致浏…

java线程状态介绍

1.新建(New): 线程对象已创建,但还没有调用 start() 方法。 2.可运行(Runnable): 线程已启动,处于就绪状态,等待 JVM 的线程调度器分配CPU时间。 3.阻塞(Blocked): 线程…

利用博弈论改进大模型性能:MIT最新研究解读

引言 在人工智能和大模型的发展过程中,我们常常遇到一个有趣的现象:同一个问题在不同形式下可能得到不同的答案。这种不一致性不仅降低了大模型的可信度,也限制了其在实际应用中的效果。为了应对这一问题,来自MIT的研究人员提出了…

什么是网络拓扑图,常见绘制工具

什么是网络拓扑图 网络拓扑图是一种图形表示方法,用于展示网络中组件的物理或逻辑布局。它显示了网络中的设备、连接以及它们之间的通信路径。网络拓扑图对于理解网络结构、规划网络扩展、诊断问题以及进行日常网络管理至关重要。 网络拓扑图的类型 1. 物理拓扑&…

Element快速入门

Vue组件库Element 1 Element介绍 vue是侧重于VM开发的,主要用于数据绑定到视图的,ElementUI就是一款侧重于V开发的前端框架,主要用于开发美观的页面的。 Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库&…

深入理解 Go 语言中的字符串不可变性与底层实现

文章目录 前言1 字符串类型的数据结构组成2 为什么要这么设计数据结构?3 为什么说字符串类型不可修改?4 如何实现字符串的修改?5 为什么字符串修改的字面量用单引号?6 如何判断字符串的修改新建了一个字符串?7 字符串的…

c基础 - 输入输出

目录 一.scanf() 和 printf() 函数 1.printf 2.scanf 二 . getchar() & putchar() 函数 1.int getchar(void) 2.int putchar(int c) 三. gets() & puts() 函数 一.scanf() 和 printf() 函数 #include <stdio.h> 需要引入头文件,stdio.h 1.printf print…

【动力电池的四种冷却方式】

文章目录 动力电池的四种冷却方式1.自然冷却2.风冷3.液冷4.直冷 动力电池的四种冷却方式 目前动力电池系统的热管理主要可分为四类&#xff0c;自然冷却、风冷、液冷、直冷。其中自然冷却是被动式的热管理方式&#xff0c;而风冷、液冷、直流是主动式的&#xff0c;这三者的主…

[运维|数据库] deepin V20.9 安装人大金仓数据库

系统环境 系统&#xff1a; deepin V20.9 安装 以KingbaseES_V008R006C008B0014_Lin64_install.iso示例安装人大金仓数据库 下载镜像 镜像下载地址 下载授权文件 授权文件下载地址 挂在镜像 sudo mount -o loop KingbaseES_V008R006C008B0014_Lin64_install.iso /mnt执行…

el-tree常用操作

一、定义 <el-treeclass"myTreeClass":data"dirTreeData":props"dirTreeProps":filter-node-method"filterDirTree":expand-on-click-node"false"node-key"id"node-click"dirTreeNodeClick":allow-…

Web前端三大主流框架介绍

Web前端三大主流框架分别是Angular、React和Vue.js。以下是关于这三个框架的详细介绍&#xff1a; Angular 来源&#xff1a;由Google开发。特点&#xff1a; 完整的框架&#xff1a;Angular是一个完整的框架&#xff0c;包括了数据绑定、组件化、路由、依赖注入等功能。类型安…

M-G364PD惯性测量单元:相机及微小层面的革命性应用

在现代科技飞速发展的今天&#xff0c;精准控制和精确测量是众多高端设备实现卓越性能的关键。爱普生推出的M-G364PD惯性测量单元&#xff08;IMU&#xff09;&#xff0c;因其卓越的性能和微小尺寸&#xff0c;成为相机以及其他微小层面应用的理想选择&#xff0c;为科技创新提…

【Spring】Spring之依赖注入源码解析(上)

目录 Spring中到底有几种依赖注入的方式&#xff1f; 手动注入 自动注入 XML的autowire自动注入 Autowired注解的自动注入 寻找注入点 桥接方法 注入点进行注入 字段注入 Set方法注入 Spring中到底有几种依赖注入的方式&#xff1f; 首先分两种&#xff1a; 手动注…

存储 Bean 对象更加简单的方式

前置操作 如果是在 spring-config 中添加 bean 标签来注册内容&#xff0c;每个类都要弄一次就显得麻烦和臃肿了&#xff0c;对于 new 操作而言就没有什么优势了。因此 spring 就引入了注解操作来实现对 Bean 对象的存储。 配置扫描路径 想要将对象成功的存储到 Spring 中&…

RustDesk服务器

一、安装node.js # cd /usr/local # wget https://registry.npmmirror.com/-/binary/node/v16.18.1/node-v16.18.1-linux-x64.tar.gz # tar -zxvf node-v16.18.1-linux-x64.tar.gz -C ./node-v16.18.1 # cd cd node-v16.18.1 # cd node-v16.18.1-linux-x64/ # mv * ../二、配置…

python onnxruntime DLL load failed: 找不到指定的模块

在安装ddddocr 报错&#xff1a;ImportError: DLL load failed while importing onnxruntime_pybind11_state: 找不到指定的模块 试了降到onnxruntime 1.8.0版本&#xff0c;升级pip再重装ddddocr均无效。 这个错误通常是因为缺少onnxruntime_pybind11_state.dll文件或者没有…

适用于STM32的U8G2回调函数例程

简介 U8g2 还包括 U8x8 库。U8g2 和 U8x8 的功能包括&#xff1a; U8g2 包括所有图形程序&#xff08;线/框/圆画&#xff09; 支持很丰富的字体库 需要微控制器中的一些内存来渲染显示屏&#xff08;需要消耗较多的ram空间资源&#xff09;U8x8 仅文本输出&#xff08;字符&am…

Liunx中使用他人身份来执行命令或新建文件

前言 在一些情况下。我们想要借助某个用户的身份来执行命令或者新建文件&#xff0c; 比如某个用户的bash是 nologin 或者 false。 该怎么做呢&#xff1f;&#xff1f; 答&#xff1a;使用 sudo -u 即可。 例如&#xff1a; sudo -u ygz1 touch temp1.txt哈哈哈&#xff0…

android gradle8.3 发布插件踩过的坑

之前写过gradle6.x和gradle7.x的插件&#xff0c;会有一些改动&#xff0c;到8.x我发现又有一些变化&#xff0c;记录一下&#xff0c;防止后边再遇到相同的情况 下边是插件的gradle文件配置 plugins {id("java-gradle-plugin") //会自动引入java-library、gradleAp…

【ES实战】ES集群机器磁盘IO过高告警分析

ES集群机器磁盘IO过高告警分析 文章目录 ES集群机器磁盘IO过高告警分析现象分析思路与手段获取告警机器的磁盘高IO时的文件通过IO文件确认索引分析思路 优化第一步&#xff1a;每个data实例用不同的磁盘第二步&#xff1a;业务调整数据写入的集中程度第三步&#xff1a;扩容 反…