当前位置: 首页 > news >正文

列表、元组、集合、字典和 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)是常见的数据结构,它们可以通过多种方式相互转换。每种数据结构…...

美图设计室

美图设计室 体验地址:美图设计室 一、产品描述 美图设计室是美图公司推出的一款集图形设计、广告制作、海报制作等功能于一体的智能设计软件。它凭借其独特的界面设计、强大的工具功能、智能化辅助设计以及丰富的社区互动功能,为用户提供了一个便捷、高…...

张雪峰:如果你现在是计算机专业,一定要优先报网络安全,它是未来国家发展的大方向

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 “计算机专业 一定要优先报 网络安全 它是未来国家发展的大方向” 为什么推荐学网络安全? “没有网络安全就没有国家安全。”当前&#xff…...

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. 项目简介 本项目旨在实现基于眼部特征的眨眼检测&#xff0c;通过监测眼睛开闭状态来计算眨眼次数&#xff0c;从而应用于疲劳监测、注意力检测等场景。使用了面部特征点检测算法&#xff0c;以及眼部特征比率&#xff08;EAR, Eye Aspect Ratio&#xff09;来判断眼睛的闭…...

aeo认证需要什么材料

AEO&#xff08;Authorized Economic Operator&#xff09;认证&#xff0c;即经认证的经营者认证&#xff0c;是企业信用管理体系的一种高级认证。申请AEO认证时&#xff0c;企业需要准备一系列的材料以证明其符合认证标准。以下是一份详细的AEO认证申请材料清单&#xff1a; …...

【iOS】YYModel

目录 什么是YYModel &#xff1f; 如何使用YYModel &#xff1f; 最简单的Model 与网络请求结合 属性为容器类的Model 白名单和黑名单 Model的嵌套 结语 什么是YYModel &#xff1f; YYModel是一个用于 iOS 和 macOS 开发的高性能的模型框架&#xff0c;主要用于对象和…...

Cadence元件A属性和B属性相互覆盖

最近在使用第三方插件集成到Cadence,协助导出BOM到平台上&#xff0c;方便对BOM进行管理和修改&#xff0c;结果因为属性A和属性B不相同&#xff0c;导致导出的BOM错误。如下图&#xff1a; ​​ 本来我们需要导出Q12&#xff0c;结果给我们导出了Q13&#xff0c;或者反之&…...

【火山引擎】语音合成 | HTTP接口 | 一次性合成 | python

目录 一 准备工作 二 HTTP接口(一次性合成-非流式) 1 接口说明 2 身份认证 3 请求方式 三 实践 四 注意事项 火山引擎语音合成TTS(Text-to-Speech)是一种基于云计算的语音合成服务,可以将文本转化为自然、流畅的语音。以下是火山引擎TTS的主要功能和特点: ①多种语音…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

JS面试常见问题——数据类型篇

这几周在进行系统的复习&#xff0c;这一篇来说一下自己复习的JS数据结构的常见面试题中比较重要的一部分 文章目录 一、JavaScript有哪些数据类型二、数据类型检测的方法1. typeof2. instanceof3. constructor4. Object.prototype.toString.call()5. type null会被判断为Obje…...

Razor编程中@Helper的用法大全

文章目录 第一章&#xff1a;Helper基础概念1.1 Helper的定义与作用1.2 Helper的基本语法结构1.3 Helper与HtmlHelper的区别 第二章&#xff1a;基础Helper用法2.1 无参数Helper2.2 带简单参数的Helper2.3 带默认值的参数2.4 使用模型作为参数 第三章&#xff1a;高级Helper用法…...

Digital IC Design Flow

Flow介绍 1.设计规格 架构师根据市场需求制作算法模型(Algorithm emulation)及芯片架构(Chip architecture),确定芯片设计规格书(Chip design specification) 原型验证 原型验证(Prototype Validation)通常位于产品开发流程的前期阶段,主要是在设计和开发的初步阶…...

AWS Elastic Beanstalk + CodePipeline(Python Flask Web的国区CI/CD)

目标 需要使用AWS Elastic Beanstalk 部署一个Python的Flask Web应用&#xff0c;并且使用CodePipeline作为CI/CD工作流。 eb部署图 前提 假设你已经有一个能够正常运行的Python的Flask Web应用项目代码&#xff0c;而且需要对已有Flask工程做一些调整。由于AWS Elastic Bea…...