列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换
二、列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换
在 Python 中,列表、元组、集合、字典和 pandas 数据框(DataFrame)是常见的数据结构,它们可以通过多种方式相互转换。每种数据结构都有其特定的用例,但它们之间的相互转换使得在不同场景下灵活使用非常方便。以下是它们之间的转换操作示例。
1. 列表(list)与其他数据结构的转换
1.1 列表转元组
# 列表转元组
lst = [1, 2, 3, 4]
tup = tuple(lst)
print(tup) # 输出: (1, 2, 3, 4)
1.2 列表转集合
列表中可能有重复元素,转换为集合会自动去重。
# 列表转集合
lst = [1, 2, 2, 3, 4, 4]
set1 = set(lst)
print(set1) # 输出: {1, 2, 3, 4}
1.3 列表转字典
列表转字典时,通常需要列表元素为键值对(或可以映射为键值对)的形式,例如:
# 列表转字典
lst = [("name", "Alice"), ("age", 30)]
dict1 = dict(lst)
print(dict1) # 输出: {'name': 'Alice', 'age': 30}
1.4 列表转数据框(DataFrame)
需要安装并导入 pandas 库。
import pandas as pd# 列表转数据框
lst = [[1, 'Alice', 23], [2, 'Bob', 30], [3, 'Charlie', 25]]
df = pd.DataFrame(lst, columns=['ID', 'Name', 'Age'])
print(df)
# 输出:
# ID Name Age
# 0 1 Alice 23
# 1 2 Bob 30
# 2 3 Charlie 25
2. 元组(tuple)与其他数据结构的转换
2.1 元组转列表
# 元组转列表
tup = (1, 2, 3, 4)
lst = list(tup)
print(lst) # 输出: [1, 2, 3, 4]
2.2 元组转集合
# 元组转集合
tup = (1, 2, 2, 3, 4)
set1 = set(tup)
print(set1) # 输出: {1, 2, 3, 4}
2.3 元组转字典
元组转字典时,元组必须包含键值对或可转换为键值对的形式。
# 元组转字典
tup = (("name", "Alice"), ("age", 30))
dict1 = dict(tup)
print(dict1) # 输出: {'name': 'Alice', 'age': 30}
2.4 元组转数据框(DataFrame)
import pandas as pd# 元组转数据框
tup = ((1, 'Alice', 23), (2, 'Bob', 30), (3, 'Charlie', 25))
df = pd.DataFrame(tup, columns=['ID', 'Name', 'Age'])
print(df)
# 输出:
# ID Name Age
# 0 1 Alice 23
# 1 2 Bob 30
# 2 3 Charlie 25
3. 集合(set)与其他数据结构的转换
3.1 集合转列表
# 集合转列表
set1 = {1, 2, 3, 4}
lst = list(set1)
print(lst) # 输出: [1, 2, 3, 4] (顺序可能不同,因为集合是无序的)
3.2 集合转元组
# 集合转元组
set1 = {1, 2, 3, 4}
tup = tuple(set1)
print(tup) # 输出: (1, 2, 3, 4) (顺序可能不同)
3.3 集合转字典
集合本身不能直接转为字典,但可以将其与值配对来构造字典:
# 集合转字典(使用 zip)
set1 = {1, 2, 3}
dict1 = dict(zip(set1, ['a', 'b', 'c']))
print(dict1) # 输出: {1: 'a', 2: 'b', 3: 'c'}
4. 字典(dict)与其他数据结构的转换
4.1 字典转列表
字典的键或值可以转换为列表。
# 字典的键转列表
dict1 = {"name": "Alice", "age": 30}
lst_keys = list(dict1.keys())
print(lst_keys) # 输出: ['name', 'age']# 字典的值转列表
lst_values = list(dict1.values())
print(lst_values) # 输出: ['Alice', 30]# 字典的键值对转为列表
lst_items = list(dict1.items())
print(lst_items) # 输出: [('name', 'Alice'), ('age', 30)]
4.2 字典转元组
字典的键值对可以转换为元组。
# 字典的键值对转元组
dict1 = {"name": "Alice", "age": 30}
tup_items = tuple(dict1.items())
print(tup_items) # 输出: (('name', 'Alice'), ('age', 30))
4.3 字典转集合
字典的键或值可以转换为集合。
# 字典的键转集合
dict1 = {"name": "Alice", "age": 30}
set_keys = set(dict1.keys())
print(set_keys) # 输出: {'name', 'age'}
4.4 字典转数据框(DataFrame)
字典的键值对可以直接转为 pandas 数据框。
import pandas as pd# 字典转数据框
dict1 = {"name": ["Alice", "Bob"], "age": [25, 30]}
df = pd.DataFrame(dict1)
print(df)
# 输出:
# name age
# 0 Alice 25
# 1 Bob 30
5. 数据框(DataFrame)与其他数据结构的转换
5.1 数据框转列表
将数据框的每一行或列转为列表。
import pandas as pd# 创建数据框
df = pd.DataFrame({"ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"], "Age": [23, 30, 25]})# 数据框的列转列表
lst = df['Name'].tolist()
print(lst) # 输出: ['Alice', 'Bob', 'Charlie']# 数据框的行转为列表
lst_rows = df.values.tolist()
print(lst_rows) # 输出: [[1, 'Alice', 23], [2, 'Bob', 30], [3, 'Charlie', 25]]
5.2 数据框转元组
# 数据框转元组
tup_rows = [tuple(x) for x in df.values]
print(tup_rows) # 输出: [(1, 'Alice', 23), (2, 'Bob', 30), (3, 'Charlie', 25)]
5.3 数据框转字典
# 数据框转字典
dict1 = df.to_dict()
print(dict1)
# 输出:
# {'ID': {0: 1, 1: 2, 2: 3},
# 'Name': {0: 'Alice', 1: 'Bob', 2: 'Charlie'},
# 'Age': {0: 23, 1: 30, 2: 25}}
5.4 数据框转集合
由于数据框是二维结构,通常需要将某一列或某一行转换为集合。
# 将某一列转换为集合
set_names = set(df['Name'])
print(set_names) # 输出: {'Charlie', 'Alice', 'Bob'}
总结
Python 中的列表、元组、集合、字典和数据框之间可以通过内置的函数和方法方便地相互转换。在实际应用中,不同的数据结构有不同的使用场景,灵活转换可以使得数据处理更加简便。通过 pandas 数据框可以实现与表
格型数据的互操作,而通过列表、元组和集合可以实现不同的数据存储和操作方式。
相关文章:
列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换
二、列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换 在 Python 中,列表、元组、集合、字典和 pandas 数据框(DataFrame)是常见的数据结构,它们可以通过多种方式相互转换。每种数据结构…...
美图设计室
美图设计室 体验地址:美图设计室 一、产品描述 美图设计室是美图公司推出的一款集图形设计、广告制作、海报制作等功能于一体的智能设计软件。它凭借其独特的界面设计、强大的工具功能、智能化辅助设计以及丰富的社区互动功能,为用户提供了一个便捷、高…...
张雪峰:如果你现在是计算机专业,一定要优先报网络安全,它是未来国家发展的大方向
🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 “计算机专业 一定要优先报 网络安全 它是未来国家发展的大方向” 为什么推荐学网络安全? “没有网络安全就没有国家安全。”当前ÿ…...
Golang | Leetcode Golang题解之第486题预测赢家
题目: 题解: func PredictTheWinner(nums []int) bool {return total(nums, 0, len(nums) - 1, 1) > 0 }func total(nums []int, start, end int, turn int) int {if start end {return nums[start] * turn}scoreStart : nums[start] * turn total…...
【Golang】Go语言中如何创建Cron定时任务
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
Android compose 重建流程1
前言 本文是笔者学习Compose是如何自动触发UI刷新的笔记,可能缺乏一定可读性和教导性.(建议阅读参考文献更具启发性) 使用以下BOM作为研究环境. composeBom "2024.04.01" androidx-compose-bom { group "androidx.compose", name "compose-bom…...
C++:模板(2)
目录 非类型模板参数 模板的特化 概念 函数模板特化 类模板特化 全特化 偏特化 模板的分离编译 分离编译的概念 模板的分离编译 编辑 模板总结 非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参:在模板参数列表中,跟在class…...
Golang 并发编程:Context 包的使用与并发控制
文章目录 一、简介二、Context 的基本概念1. context 包常用函数 三、Context 的基本用法1. WithCancel:取消任务的上下文 四、超时控制:WithTimeout 和 WithDeadline1. 使用 WithTimeout 控制任务超时2. 使用 WithDeadline 设定截止时间 五、传递上下文…...
QGraphics类型学习使用【Qt】【C++】
QGraphics类型学习使用 需求过程全部完整代码 首先已知,QGraphicsView,QGraphicsScene, QGraphicsItem,分别称为:视图,场景,图元,图表就是各种各样的元素,图片元素,线条元…...
迁移学习和在线学习小结
迁移学习 英文小名: transform learning 简介: 把已经训练好的模型A为基本, 在新场景中, 根据新数据建立模型B 目的: 将某个领域或任务上学习到的知识/模式, 应用到不同但相关的领域/问题中 方法: 1.结构引用 适用情况: 新数据多, 场景相似度高, 可以基于原模型重新训练 2.特征…...
克里金插值(Kriging interpolation)
原理可参考该文件:克里金(Kriging)插值的原理与公式推导 - xg1990 matlab code可参考:Ordinary Kriging - File Exchange - MATLAB Central Some notes: 采用普通克里金时,采样的密度对结果影响非常大。若采样密度不够,误差会非…...
sealed class-kotlin中的封闭类
在 Kotlin 中,sealed class(密封类)是一种特殊的类,用于限制继承的类的数量。密封类可以被用来表示一组有限的类型,通常用于状态管理或表达多种可能的错误类型。 密封类用 sealed 关键字定义,这意味着只能…...
MongoDB Shell 基本命令(一)
MongoDB Shell 基本命令(一) 1. 基本概念 SQL术语/概念MongoDB术语/概念解释/说明databasedb数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引table joins表连接,MongoDB不支持primary keyprimary key主键,Mon…...
Flink时间语义和时间窗口
前言 在实际的流计算业务场景中,我们会发现,数据和数据的计算往往都和时间具有相关性。 举几个例子: 直播间右上角通常会显示观看直播的人数,并且这个数字每隔一段时间就会更新一次,比如10秒。电商平台的商品列表&a…...
在wpf中登录成功之后怎么设置主页布局及点击不同的菜单跳转到不同的页面,这个是我们做wpf项目必要会的一个功能
通过frame与page实现在mvvm下的页面跳转 在wpf中登录成功之后怎么设置主页布局及点击不同的菜单跳转到不同的页面_哔哩哔哩_bilibili 1、MainWindow代码 <DockPanel><StackPanel DockPanel.Dock"Top" Height"40"><Grid><Grid.ColumnD…...
基于opencv的人脸闭眼识别疲劳监测
1. 项目简介 本项目旨在实现基于眼部特征的眨眼检测,通过监测眼睛开闭状态来计算眨眼次数,从而应用于疲劳监测、注意力检测等场景。使用了面部特征点检测算法,以及眼部特征比率(EAR, Eye Aspect Ratio)来判断眼睛的闭…...
aeo认证需要什么材料
AEO(Authorized Economic Operator)认证,即经认证的经营者认证,是企业信用管理体系的一种高级认证。申请AEO认证时,企业需要准备一系列的材料以证明其符合认证标准。以下是一份详细的AEO认证申请材料清单: …...
【iOS】YYModel
目录 什么是YYModel ? 如何使用YYModel ? 最简单的Model 与网络请求结合 属性为容器类的Model 白名单和黑名单 Model的嵌套 结语 什么是YYModel ? YYModel是一个用于 iOS 和 macOS 开发的高性能的模型框架,主要用于对象和…...
Cadence元件A属性和B属性相互覆盖
最近在使用第三方插件集成到Cadence,协助导出BOM到平台上,方便对BOM进行管理和修改,结果因为属性A和属性B不相同,导致导出的BOM错误。如下图: 本来我们需要导出Q12,结果给我们导出了Q13,或者反之&…...
【火山引擎】语音合成 | HTTP接口 | 一次性合成 | python
目录 一 准备工作 二 HTTP接口(一次性合成-非流式) 1 接口说明 2 身份认证 3 请求方式 三 实践 四 注意事项 火山引擎语音合成TTS(Text-to-Speech)是一种基于云计算的语音合成服务,可以将文本转化为自然、流畅的语音。以下是火山引擎TTS的主要功能和特点: ①多种语音…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
