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

列表、元组、集合、字典和 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 数据框可以实现与表

格型数据的互操作,而通过列表、元组和集合可以实现不同的数据存储和操作方式。


http://www.kler.cn/news/362745.html

相关文章:

  • 【Redis】数据结构(下)
  • docker sameersbn/bind dns服务器
  • 架构师备考-背诵精华(系统架构评估)
  • 渗透测试 工具OneForAll
  • 100种算法【Python版】第4篇——回溯法
  • Windows系统启动MongoDB报错无法连接服务器
  • 【Qt】QTableView添加下拉框过滤条件
  • 华为无线路由器设置成交换机
  • SpringBoot项目ES6.8升级ES7.4.0
  • STM32G474使用TIM2触发DAC输出输出正弦波
  • uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)
  • HarmonyOS鸿蒙分布式文件操作的时候权限问题
  • Rust中的Sync特征:确保多线程间安全共享数据
  • 软件工程--需求分析与用例模型
  • Python包——Matplotlib
  • C++STL之list
  • 探索卷积层参数量与计算量
  • MySQL--基本介绍
  • HBuilder X 中Vue.js基础使用2(三)
  • 基于 Konva 实现Web PPT 编辑器(三)
  • qt生成uuid,转成int。ai回答亲测可以
  • 线性可分支持向量机的原理推导 9-32线性分类超平面的位置 公式解析
  • Dubbo接口解析
  • WordPress多站点子目录模式更换域名的教程方法
  • elementUI进度条el-progress不显示白色
  • 使用预测或实际LTV计算ROI