021—pandas 书单整理将同一种书整理在一起

2024-03-07 15:28

本文主要是介绍021—pandas 书单整理将同一种书整理在一起,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在办公自动化场景下,最常见的需求就是信息的整理,pandas 最擅长复杂数据逻辑的处理,能够让整理工作更加高效,同时不容易出错。今天的案例是将一个平铺的书单按品类进行整理,合并为一行。

需求:

  • 将书按书名进行合并,比如资本论、大学语文、数据结构 各只保留一个就行
  • 增加 备注 列,用于表示书的册数,有三种情况:
  • 册名为数字的,如资本论,显示 1-3
  • 册名为文字的,如大学语文,显示 上下
  • 没有分册的,如数据结构,显示为空

思路:

既然要按书名分组,同时册名要整理在备注中,那我们就要拆书名和册名,这个可以用字符访问器(.str.xx)来操作。
分组后可以用 agg() 来聚合不同的列。
接下来按书名进行分组,作者和 ISBN 编码同组内相同,随便显示其中一个即可,我们可以用 max。
接下来最复杂的就是备注列了,我们可以写一个备注处理的函数来专门处理。
备注列依赖我们将书单列拆分的册名(为了方便后期处理,我们拆分时可以直接叫备注)。这个处理的逻辑是:

  1. 如果此列全是为空,则显示空字符
  2. 如果此列全为数字:则输出「列最小-列最大值」这样的合成字符
  3. 如果以上都不时,就将他们合并起来,这个可以直接用 Series 的 sum,它实现了字符串的拼接
  • 理清了以上逻辑,接下来我们就开始编写代码。

二、使用步骤

1.引入库

代码如下(示例):

from io import StringIO
import pandas as pd

2.读入数据

代码如下(示例):

data = '''
书单,作者,ISBN
资本论 1,袁某,23445-2342
资本论 2,袁某,23445-2342
资本论 3,袁某,23445-2342
大学语文 上,李四,a25245-32425
大学语文 下,李四,a25245-32425
数据结构,王某,x342w-ssa
'''df = pd.read_csv(StringIO(data))
df

在这里插入图片描述

#给它起列列索引名,赋值为一个新的 DataFrame 备用:
df1 = df.书单.str.split(' ', expand=True)
df1 = df1.set_axis(['书名', '备注'], axis=1)
df1

在这里插入图片描述

#将这个拆分的数据合并到原数据中,方便下一步分组:
new_df = pd.concat([df, df1], axis=1)
new_df

在这里插入图片描述

#接下来,编写我们提到的备注处理聚合函数(它的参数备注列分组后的一个 Series):
def mark(ser: pd.Series):# 判断是否全为空值if ser.isna().all():return ''# 判断是否全为数字elif ser.str.isdecimal().all():return f'{ser.min()}-{ser.max()}' else:return ser.sum()
#分组,聚合并应用以上函数:
(new_df.groupby('书名', as_index=False, sort=False).agg({'作者': max,'ISBN': max,'备注': mark})
)
#在分组时,我们取消了让分组名成为索引,取消了分组的重新排序,保持与原数据相同的顺序。

在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

这篇关于021—pandas 书单整理将同一种书整理在一起的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783968

相关文章

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Python下载Pandas包的步骤

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Pandas中多重索引技巧的实现

《Pandas中多重索引技巧的实现》Pandas中的多重索引功能强大,适用于处理多维数据,本文就来介绍一下多重索引技巧,具有一定的参考价值,感兴趣的可以了解一下... 目录1.多重索引概述2.多重索引的基本操作2.1 选择和切片多重索引2.2 交换层级与重设索引3.多重索引的高级操作3.1 多重索引的分组聚

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram