pandas 中的 tolist() 和 to_list()

  • 在使用pandas的时候,有时候会需要将pandas中的数据类型转换为python中的list,而pandas也提供了tolist()to_list()这两个方法来实现这一需求

  • 几乎可以认为pandas中的tolist()to_list()用法没有差别

  • 还顺便介绍了numpy中的tolist()方法,其主要特点是可以作用于任意维度的数组

1. tolist()

	pandas.api.extensions.ExtensionArray.tolist()Return a list of the values.These are each a scalar type, which is a Python scalar (for str, int, float) or a pandas scalar (for Timestamp/Timedelta/Interval/Period)
>>> arr = pd.array([1, 2, 3])
>>> arr.tolist()
[1, 2, 3]

这是官方文档上对于tolist()的说明与示例。从中可以看出:

  • 该方法属于pandas扩展的,从其所属的pandas.api.extensions.ExtensionArray即可看出
  • 该方法返回一个listlist中元素的类型既可以为python的数据类型,也可以pandas中的类型,(在较早的版本中,返回列表中的元素类型为numpy类型或者pandas类型)

下面用示例来介绍tolist()方法的使用

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]},index=["x", "y", "z"]
)
   A  B
x  1  4
y  2  5
z  3  6

1.1. 不能直接用于DataFrame

df.tolist()
# AttributeError: 'DataFrame' object has no attribute 'tolist'

1.2. 用于indexcolumn属性上

index_tolist = df.index.tolist()
print(index_tolist)
print(type(index_tolist))
print(type(index_tolist[0]))# ['x', 'y', 'z']
# <class 'list'>
# <class 'str'>
columns_tolist = df.columns.tolist()
print(columns_tolist)
print(type(columns_tolist))
print(type(columns_tolist[0]))# ['A', 'B']
# <class 'list'>
# <class 'str'>

1.3. 用于行列数据上

row_tolist = df.iloc[0].tolist()
print(row_tolist)
print(type(row_tolist))
print(type(row_tolist[0]))# [1, 4]
# <class 'list'>
# <class 'int'>
col_tolist = df["A"].tolist()
print(col_tolist)
print(type(col_tolist))
print(type(col_tolist[0]))# [1, 2, 3]
# <class 'list'>
# <class 'int'>

此处也表明tolist()Series()的用法

1.4. 用在多维索引上

index_df = pd.DataFrame([["bar", "one"], ["bar", "two"], ["foo", "one"], ["foo", "two"]],columns=["first", "second"],
)mul_index = pd.MultiIndex.from_frame(index_df)
mul_df = pd.DataFrame(np.random.randn(4, 3), index=mul_index)
                     0         1         2
first second                              
bar   one    -0.625643  0.533483  0.066657two    -1.759180  1.116185  0.264087
foo   one    -0.773947 -1.649559  1.865090two     1.200301 -3.090575 -1.464554
mul_index_tolist = mul_df.index.tolist()
print(mul_index_tolist)
print(type(mul_index_tolist))
print(type(mul_index_tolist[0]))
print(type(mul_index_tolist[0][0]))# [('bar', 'one'), ('bar', 'two'), ('foo', 'one'), ('foo', 'two')]
# <class 'list'>
# <class 'tuple'>
# <class 'str'>

2. to_list()

	pandas.Index.to_list()pandas.Series.to_list()Return a list of the values.These are each a scalar type, which is a Python scalar (for str, int, float) or a pandas scalar (for Timestamp/Timedelta/Interval/Period)

从官方文档可以看出,to_list()tolist() 的解释说明完全一致,所不同的是tolist()属于pandas扩展方法,而to_list()则属于IndexSeries类型的方法。

2.1. 不能直接用于DataFrame

df.to_list()
# AttributeError: 'DataFrame' object has no attribute 'to_list'

2.2. 用于indexcolumn属性上

index_to_list = df.index.to_list()
print(index_to_list)
print(type(index_to_list))
print(type(index_to_list[0]))# ['x', 'y', 'z']
# <class 'list'>
# <class 'str'>
columns_to_list = df.columns.to_list()
print(columns_to_list)
print(type(columns_to_list))
print(type(columns_to_list[0]))# ['A', 'B']
# <class 'list'>
# <class 'str'>

2.3. 用于行列数据上

row_to_list = df.iloc[0].to_list()
print(row_to_list)
print(type(row_to_list))
print(type(row_to_list[0]))# [1, 4]
# <class 'list'>
# <class 'int'>
col_to_list = df["A"].to_list()
print(col_to_list)
print(type(col_to_list))
print(type(col_to_list[0]))# [1, 2, 3]
# <class 'list'>
# <class 'int'>

此处也表明to_list()Series()上的用法

2.4. 用在多维索引上

index_df = pd.DataFrame([["bar", "one"], ["bar", "two"], ["foo", "one"], ["foo", "two"]],columns=["first", "second"],
)mul_index = pd.MultiIndex.from_frame(index_df)
mul_df = pd.DataFrame(np.random.randn(4, 3), index=mul_index)
                     0         1         2
first second                              
bar   one    -0.625643  0.533483  0.066657two    -1.759180  1.116185  0.264087
foo   one    -0.773947 -1.649559  1.865090two     1.200301 -3.090575 -1.464554
mul_index_to_list = mul_df.index.to_list()print(mul_index_to_list)
print(type(mul_index_to_list))
print(type(mul_index_to_list[0]))
print(type(mul_index_to_list[0][0]))# [('bar', 'one'), ('bar', 'two'), ('foo', 'one'), ('foo', 'two')]
# <class 'list'>
# <class 'tuple'>
# <class 'str'>

3. numpy 中的 tolist()

numpy.ndarray.tolist()Return the array as an a.ndim-levels deep nested list of Python scalars.Return a copy of the array data as a (nested) Python list. Data items are converted to the nearest compatible builtin Python type, via the item function.If a.ndim is 0, then since the depth of the nested list is 0, it will not be a list at all, but a simple Python scalar.

numpy 中的 tolist() 着重强调了两点:

  • 列表中的元素类型都是python数据类型
  • 可以对0维、1维和2维以及更高维度的numpy.ndarray进行转换,这一点是pandas中的tolistto_list所不具备的
a = np.uint32([1, 2])
a_list = list(a)
a_list    # [1, 2]
type(a_list[0])   # <class 'numpy.uint32'>a_tolist = a.tolist()
a_tolist   # [1, 2]
type(a_tolist[0])  # <class 'int'>
a = np.array([[1, 2], [3, 4]])
list(a)   # [array([1, 2]), array([3, 4])]
a.tolist()   # [[1, 2], [3, 4]]
a = np.array(1)
# list(a)
# Traceback (most recent call last):
#  ...
# TypeError: iteration over a 0-d array
a.tolist()    # 1

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

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

相关文章

NPL预训练模型-GPT-3

简介及特点 GPT-3是一个由OpenAI开发的自然语言处理&#xff08;NLP&#xff09;预训练模型&#xff0c;它是生成式预训练变换器&#xff08;Generative Pretrained Transformer&#xff09;系列的第三代模型。GPT-3以其巨大的规模和强大的语言处理能力而闻名&#xff0c;具有…

爬虫 | 基于 Python 实现有道翻译工具

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务&#xff0c;能够实现多种语言的互译&#xff0c;提供高质量的翻译结果。 目录 一、项目功能 二、注意事项 三、代码解析 1. 导入…

DC-9渗透测试复现

DC-9渗透测试复现 目的&#xff1a; 获取最高权限以及flag 过程&#xff1a; 信息打点--sql注入- 文件包含漏洞-Knockd开门开启ssh连接-hyjra爆破-sudo提权(文件追加) 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.137) 靶机&#xff1a;DC_3(192.168.85.141) …

javaswing + mysql通讯录

javaswingaddressbook 需要代码私聊

Day15-Python基础学习之PySpark

PySpark 安装&#xff1a; pip install pyspark # pySpark入门 from pyspark import SparkConf, SparkContext # 创建SparkConf对象 conf SparkConf().setMaster("local[*]").setAppName("test_spark_app") # 基于SparkConf类对象创建SparkContext对象 …

结构体及应用;结构体指针及应用;union、enum、typedef三个关键字

结构体及应用 参考文章链接&#xff1a;https://blog.csdn.net/zw1996/article/details/53844585结构体的声明 结构体的初始化 注意如果在定义结构体变量的时候没有初始化&#xff0c;那么后面就不能全部一起初始化了。 /这样是可以的&#xff0c;在定义变量的时候就初始化了…

C语言【复合类型(自定义类型)】

一、结构体 结构体(struct)可以理解为用户自定义的特殊的复合的“数据类型”&#xff1b; 1. 结构体变量的定义和初始化 定义结构体变量的方式&#xff1a; 先声明结构体类型再定义变量名 在声明类型的同时定义变量 // 结构体类型的定义 struct stu {char name[50];int age;…

(十四)C++自制植物大战僵尸游戏windows平台视频播放实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs VLC库 在Cocos2d-x游戏开发框架中&#xff0c;没有实现windows平台视频播放的功能&#xff0c;需要自定义实现。在本项目中使用vlc库实现windows平台的视频播放功能。 vlc官网&#xff1a;网址 下载完成后&#x…

虚幻引擎源码版安装下载,点击GenerateProjectFiles.bat报错 error NU1101NuGet包问题解决参考方案

开发环境配置与源码安装使用 安装VS2022 按照官方文档安装需要的vs配置 虚幻引擎源代码下载 Epic里面下载的引擎与源代码引擎区别&#xff1a;Epic里面下载的引擎是已经编译过的它的源代码访问权限不完整&#xff0c;源代码版本提供比较完整引擎代码&#xff0c;并且可以修…

密码学 | 承诺:Pedersen Commitment

​ &#x1f951;原文&#xff1a;密码学承诺之 Pedersen Commitment 原理及应用 &#x1f951;写在前面&#xff1a;本文属搬运博客&#xff0c;自己留存学习。 ​ 1 承诺 密码学承诺方案是一个涉及双方的 二阶段 交互协议&#xff0c;双方分别为 承诺方 和 接收方。 第…

MDK stm32怎么生成bin文件

第一种 D:\Keil_v5\ARM\ac5.6\bin\fromelf.exe --bin -o ../../Output/atk_f407.bin ../../Output/atk_f407.axf 空格解析 D:\Keil_v5\ARM\ac5.6\bin\fromelf.exe一个空格--bin一个空格-o两个空格../../Output/atk_f407.bin ../../Output/atk_f407.axf &#xff08;注意后…

OWASP 发布十大开源软件风险清单(详解版)

近日&#xff0c;OWASP发文称&#xff0c;尽管软件供应链对开源软件 (OSS) 的依赖程度很高&#xff0c;但业内缺乏一致的用于了解和衡量OSS风险的方法。OSS 风险管理始于许可管理&#xff0c;之后延伸至CVE&#xff0c;但我们仍然缺乏与安全、法律和运营相关的全面的OSS风险管理…

ELK,ELFK日志收集分析系统

ELK简介 ELK是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch&#xff0c;Logstash和Kibana三个开源工具配合使用&#xff0c;实现用户对日志的查询、排序、统计需求。 ELK工作原理 在所有需要收集日志的服务器上部署Logstash&#xff0c;或者先将日志进行集中…

Python 判断一个数是否为素数

在Python中&#xff0c;判断一个数是否为素数可以通过多种方法实现。以下是一种简单的方法&#xff0c;它通过检查给定数是否有除了1和它本身之外的因数来确定它是否是素数&#xff1a; def is_prime(number):if number < 1:return False # 0和1不是素数if number < 3:…

c# .net 香橙派 Orangepi GPIO高低电平、上升沿触发\下降沿触发 监听回调方法

c# .net 香橙派GPIO高低电平、上升沿触发\下降沿触发 监听回调方法 通过gpio readall 查看 gpio编码 这里用orangepi zero3 ,gpio= 70为例 当gpio 70 输入高电平时,触发回调 c# .net 代码 方法1: Nuget 包 System.Device.Gpio ,微软官方库对香橙派支持越来越好了,用得…

SpringBoot多数据源(二)

SpringBoot多数据源AbstractRoutingDataSource&#xff08;二&#xff09; 1.多数据源配置2.多数据源调用流程3.实现 1.多数据源配置 spring-jdbc模块提供AbstractRoutingDataSource,其内部可以包含了多个DataSource&#xff0c; 然后在运行时来动态的访问数据库 2.多数据源…

vue 组件间通信方式

目录 1、props传递数据&#xff08;父 → 子&#xff09; 2、v-model&#xff08;双向绑定&#xff09; 3、.sync&#xff08;双向绑定&#xff09; 4、ref&#xff08;使用 ref 属性获取子组件的实例或 DOM 元素&#xff09; 5、$emit / v-on&#xff08;子组件向父组件发…

【Python系列】查看虚拟环境信息和包大小

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java基于SpringBoot+Vue的蜗牛兼职网系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

CSS-布局

display display 属性是用于控制 布局 的最重要的 CSS 属性。display 属性规定是否/如何显示元素。 每个 HTML 元素都有一个默认的 display 值&#xff0c;具体取决于它的元素类型。大多数元素的默认 display 值为 block 或 inline。 block block&#xff1a;块级元素。块级…