-
2022-02-23 09:05:22
处理excle时,往往单元格中出现不止一个数据,有时候可能会多个,比如一个单元格中的内容为“张三、赵四、王五”,想要将他们单独提取出来,并反馈总数量。利用python可以轻松处理。
#首先获取该单元格的内容
person=xiangmu.cell(row=data_row,column=16).value
#设置他们的间隔符号,判断有几个人名
add_row = len(person.split('、'))#循环输出该单元格所包含的人名
for k in range(add_row):
new_person=person.split('、')[k]更多相关内容 -
Python合并多个单元格
2021-06-08 15:35:24# 新建列表存放每个文件数据(依次读取多个相同结构的Excel文件并创建DataFrame) dfs = [] for root,dirs,files in os.walk(pwd): # 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。 ...import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'Data' # 获取文件目录 # 新建列表,存放文件名 file_list = [] # 新建列表存放每个文件数据(依次读取多个相同结构的Excel文件并创建DataFrame) dfs = [] for root,dirs,files in os.walk(pwd): # 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。 for file in files: file_path = os.path.join(root, file) file_list.append(file_path) # 使用os.path.join(dirpath, name)得到全路径 df = pd.read_excel(file_path) # 将excel转换成DataFrame dfs.append(df) # 将多个DataFrame合并为一个 df = pd.concat(dfs) # 写入excel文件,不包含索引数据 df.to_excel('Result.xls', index=False)
-
【python】将单元格中的多个数据拆分为多行数据(explode方法使用)
2020-05-23 17:19:30一个企业会有多个擅长领域,为了作多维度数据特征分析,需要将‘企业画像’中单元格的数据进行拆分成为一行一个特征的数据样式,且其他列数据保持不变,简单的demo(以随机两个公司为例)如下 2. 问题解决 这里需要...1. 背景与需求
在处理数据中,往往需要做多维特征提取(一对多),如下:
一个企业会有多个擅长领域,为了作多维度数据特征分析,需要将‘企业画像’中单元格的数据进行拆分成为一行一个特征的数据样式,且其他列数据保持不变,简单的demo(以随机两个公司为例)如下
2. 问题解决
这里需要使用pandas中的explode方法,注意此方法是在0.25.0版本之后才有,所以确认当前的pandas版本是在此之上,查看某个库的版本可以使用如下代码
import pandas print(pandas.__version__) 0.25.3 #当前的版本
2.1 官方示例
df.explode()
方法的使用代码如下:import pandas as pd df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1}) print(df) print(df.explode('A'))
→ 输出的结果为:(会将一列的单元格数据进行拆分,注意数据的格式:列表里面多个元素)
A B 0 [1, 2, 3] 1 1 foo 1 2 [] 1 3 [3, 4] 1 A B 0 1 1 0 2 1 0 3 1 1 foo 1 2 NaN 1 3 3 1 3 4 1
2.2 实际操作
首先导入库,进行文件数据的读取
import pandas as pd data = pd.read_excel('data_ok.xlsx') data.head(10)
→ 输出的结果为:(文件数据导入成功)
2.2.1 采坑
观察官方给出的示例,为了确保数据的格式一样,先把格式化为统一,因此就对‘企业画像’这个字段进行数据处理
data['企业画像'] = data['企业画像'].apply(lambda x:[x.replace('、',', ')]) data.head(10)
→ 输出的结果为:(在jupyter notebook里面这里看上去是和官方是一致的)
然后在按照‘企业画像’字段进行拆分数据,运行代码及输出的结果如下,会发现并没有出现想要的结果
2.2.2 问题纠错
碰巧的是我在spyder里面运行相同的代码,然后在调试的过程中,发现中间进行目标格式转化时,spyder的变量查看器里的数据格式是和jupyter notebook中不一样(列表里面只有一个元素)。当执行完数据格式转化之后,spyder中的数据如下
区别在于,jupyter notebook在显示数据的时候将代表字符串格式的引号省去了,但是spyder中是显示出来了。 因此可以推测:虽然在jupyter notebook中数据看上去是一致的,但是格式上并没有化为一致,这也就是为什么直接explode之后并没有出现我们想要的结果的原因,接下来的操作中证实了这个猜测3. 问题解决
还是修改‘企业画像’中单元格的数据格式,这次应该是将数据转为一个一个的元素,然后是列表的形式,就可以使用split方法,代码及输出结果如下:
然后为了再次体现出差异性,将相同的代码在spyder中运行,结果如下
然后再对比‘企业画像’中的数据,可以发现之间的区别:jupyter notebook在显示数据的时候会将引号省去,造成表面上数据格式的统一(也证实了之前的猜测),这次的数据格式是和官方示范的一样了,接下来就是进行数据拆分了在jupyter notebook中执行代码如下:
在spyder中执行代码如下:
最终完成数据清洗的要求,进行数据的多维特征提取4. 小结
官方示例给的demo很是简洁,但是在实际操作的过程中数据并没有那么简单,而且在编程敲代码中不要只习惯用一种编辑器,因为没有一种编辑器可以说是非常完美的,都存在优缺点,根据具体的需要选择相应的编辑器即可
切记:敲代码的初衷是解决问题,使得问题简单化而不是复杂化
-
Python处理Excel实战3—单元格相关设置等
2020-11-27 18:24:47用Python处理Excel的实质即是用编程来替代手动操作,对于处理日常经常需要处理规律性的数据,可以较大地解放生产力。本文主要涉及处理以下内容:1、取消单元格合并2、合并单元格3、写入公式4、字体样式5、文本对齐6...用Python处理Excel的实质即是用编程来替代手动操作,对于处理日常经常需要处理规律性的数据,可以较大地解放生产力。本文主要涉及处理以下内容:
1、取消单元格合并
2、合并单元格
3、写入公式
4、字体样式
5、文本对齐
6、单元格写入数据
主要操作就是,如何将左图的数据处理为右图的数据。在源数据表demo.xlsx中,左图位于工作簿的Sheet1表。
源数据
希望处理后数据
# 导入需要的模块
from openpyxl import load_workbook
# 加载需要处理的文件
wb2 = load_workbook('demo.xlsx')
我们可以用print (wb2.sheetnames),来查看加载的工作簿中包含的工作表。工作中,一个工作簿一般包含许多工作表。
如截图所示,在待处理的数据中A3:B3是合并了单元格的,要做的操作即取消合并单元格,然后重新对A3:C3进行合并单元格。
# 选取需要处理的工作表,待处理的数据在Sheet1表
ws = wb2['Sheet1']
# 取消合并单元格,内容不会丢失
ws.unmerge_cells('A3:B3')
# 重新合并单元格。当内容在第一个单元格合并后不会丢失;如果在居中单元格,则会丢失。
ws.merge_cells('A3:C3')
对源数据增加合并行,在A9单元格输入内容「合并」,对面积和人口进行求和。
ws['A9'].value = '合计'
ws.cell(row=9,column=2).value = '=SUM(B5:B8)'
ws.cell(row=9,column=3).value = '=SUM(C5:C8)'
# 可以用A9这种写法,也可以用(row=9,column=1)这种写法
对字体样式等进行处理,需要导入需要的模块Font和Alignment。其中Font 对象有 4 个参数,分别为:
Name:字符串值,设置字体名称,例如“Arial”
Size:整数值,设置字体大小。
Bold:布尔值,设置是否加粗字体,为 True 则加粗。
Italic:布尔值,设置是否为斜体,为 True 则为斜体。
Underline:设置是否下划线,none表示无下划线。
Color:设置字体颜色,FF0000表示红色。
Alignment设置单元格字体对齐,常用的参数如下:
horizontal,可以设置水平居中。
vertical,可以用来设置垂直居中。
wrap_text,用来设置是否自动换行。
# 导入所需的Font和Alignment
from openpyxl.styles import Font
from openpyxl.styles import Alignment
# 进行所需的字体样式,微软雅黑、13号、粗体、非斜体、无下划线、红色
all_font = Font(name='微软雅黑',size=13,bold=True,italic=False,underline='none',color='FF0000')
# 和对齐方式设置,垂直居中、水平居中、无自动换行
align = Alignment(horizontal='center',vertical='center',wrap_text=False)
对合并单元格、求和行应用相关的字体和对齐方式设置
ws['A3'].font = all_font
ws['A3'].alignment = align
ws['A9'].font = all_font
ws.cell(row=9,column=2).font = all_font
ws.cell(row=9,column=3).font = all_font
处理完之后记得进行保存。
wb2.save('demo.xlsx')
当我们完全处理完上面的步骤,然后打开工作簿会发现Sheet1的源数据已经处理OK了。
欲知更多的操作,且看下回分解。。。
-
Python处理Excel表中单元格带有换行的数据
2021-05-12 23:24:17Python处理Excel表中单元格带有换行的数据 文章目录Python处理Excel表中单元格带有换行的数据问题样式实例问题实例实现代码实例结果 问题样式 在数据处理过程中常常会遇到这样一个问题,在给出的Excel表中,有一列... -
python – Pandas根据另一个单元格更改单元格值
2020-12-10 13:38:05我目前正在格式化来自两个...将这两个数据帧合并为一个之后,我遇到的问题是每小时(“10:00:00”)有原始数据集,但其他数据(每5分钟像“10:47:14”)不包括此数据.以下是合并数据框的外观:room time con auth capac... -
python之DataFrame实现excel合并单元格
2021-03-17 20:10:30在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格,需要根据A列的值,合并B、C列的对应单元格pandas中的to_excel方法只能对索引进行合并,而xlsxwriter中,虽然提供有merge_... -
python批量处理excel——给指定单元格填充颜色
2021-08-13 11:28:58要求批量处理excel文件,每个excel中包含多个sheet页,表与表之间sheet一样、表样一样,但填表的内容不同,要求批量填充指定单元格颜色(本实验用标准颜色:绿色) 2.解决思路 S1:尝试对一个文件实现指定单元格... -
python 读取合并单元格
2020-11-28 12:10:13广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!使用xlrd自带属性:merged_cells # 获取表格中所有合并单元格位置,以列表形式返回 (起始行,结束行,... -
利用Python实现Excel合并单元格
2020-07-01 10:10:54利用Python实现Excel合并单元格 ...帖子 python之DataFrame写excel合并单元格 中提供了一种方法,但在使用中会出现一些问题,比如无法处理字符串等类型数据。通过修改方法,定义了一个excel_merge_cells函数,基本可以 -
如何用Python拆分合并后的Excel单元格?
2020-11-20 21:33:58我尝试只拆分Excel文件中的合并单元格(包含多个工作表),如下所示:请注意有部分/全部空行。这些行不会合并。在使用openpyxl,我在每个工作表中找到了合并的单元格区域,代码如下:wb2 = load_workbook('Example.... -
python之DataFrame实现excel合并单元格_python
2020-12-03 21:40:21这篇文章主要为大家详细介绍了python之DataFrame实现excel合并单元格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格... -
Python excel 合并居中值相同的单元格
2022-04-21 13:36:55这里要说明一下,本文包含的代码并不是自己写的,是我找了很多文章拼凑出来的,比如如何找相同内容的单元格、怎么合并、怎么居中等等。出处许多,这边就不一个个放链接了。就当做一份自己写的学习笔记供大家参考。 ... -
Python让Excel飞起来—批量处理行、列和单元格
2022-01-06 16:54:03案例01 精确调整多个工作簿的行高和列宽 ·代码文件:精确调整多个工作簿的行高和列宽.py ·数据文件:销售表(文件夹) 除了前面讲解的工作簿和工作表的批量操作,Python还可以对工作表中的行、列和单元格等... -
Python对Excel按列值筛选并拆分表格到多个文件的代码
2021-01-02 15:03:15场景:集团中心下发本省数据时,并未按地市、业务拆分,现需要按地市、业务拆分并分发到地市。 本文利用Python的pandas包实现了以上场景。... 包含多个sheet的Excel 需要按列筛选出来另存为其它文件 -
使用python中的csv模块写入特定单元格
2020-11-29 02:15:19而是将row参数写入writer的文件对象,实际上它只是在一行中附加与writer关联的csv文件.不要被劝阻使用csv module,它使用起来很简单,如果您可以相对容易地实现您正在寻找的更高级别的功能.例如,看看... -
python学习笔记 - 设置Excel单元格样式
2020-12-25 19:47:20使用Python批量设置Excel样式 -
python使用xlwt形成合并单元格的excel并且读取合并单元格的excel
2019-11-12 13:24:47在日常数据报表数据处理中,经常会遇到看某个大类下面每个小类的各自的情况,此时形成的合并一些单元格作为表头的excel。在excel中,手动合并单元格比较容易,但是怎么利用python构造某些列或者行合并作为标题行或... -
Python中xlwt设置excel单元格字体及格式方法
2020-11-27 18:26:47本文主要为大家详细介绍了Python中使用xlwt模块设置单元格的一些基本样式,如设置单元格的背景颜色,下框线,字体,字体的颜色,设置列宽行高,插入简单的图片,希望能帮助到大家。详细程序如下:#!/usr/bin/env ... -
Python在Excel中操作单元格,最全整理版
2021-12-17 09:05:36Python在Excel中操作单元格,最全整理版 -
python-openpyxl Excel的单元格样式设置,包括字体、样式、宽高等等!
2021-09-10 22:05:21# excel 数据处理库 import openpyxl # excel 数据样式设置类 from openpyxl.styles import Font, PatternFill, Border, Side, Alignment 加载excel数据表格 # 读取表格数据 wb = openpyxl.load_workbook('... -
【Python_016】把数据写进excel特定单元格
2020-05-31 09:58:20本篇介绍一下如何将数据写进excel特定单元格 适用场景: excel中已做好特定模板,只需填一些空就可以 (如果是要导源数据之类,建议还是直接to_excel/to_csv 比较方便) 粗糙的做了一个模板,如下: 源数据如下: ... -
Python操作Excel合并单元格
2020-11-29 11:29:27每门编程语言都会遇到操作Excel!本文主要说下Python对Excel操作时合并单元格的情况。目录1.效果图2.用到的方法3.完整代码1效果图2用到的方法...新建一个Excel,里面可包含多个sheet ,程序中要对具体工作sheet... -
Python编程之读取Excel xlsx格式带合并单元格的文件
2021-09-08 16:41:371、文件内容 2、代码实现 import xlrd apply_dic = [] def get_excel(): with xlrd.open_workbook(r'kecheng.xlsx') as workbook: ... for index in name_sheets: # for 循环读取每一个sheet表的内容 -
python之DataFrame写excel合并单元格
2017-03-02 00:33:06在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格,需要根据A列的值,合并B、C列的对应单元格 pandas中的to_excel方法只能对索引进行合并,而xlsxwriter中,虽然提供有... -
Python:利用xlwt设置Excel单元格格式
2020-11-27 16:58:05xlwt介绍和安装pip install xlwt在保存之前,可以设置单元格的属性,官网提供了以下6种设置。GroupAttributesNumber formatNumber format index (index to FORMAT record)FontFont index (index to FONT record)...