首页app软件python函数内嵌套函数 python嵌套函数怎么调用

python函数内嵌套函数 python嵌套函数怎么调用

圆圆2025-08-13 17:00:51次浏览条评论

Python中将复杂嵌套数据转换为CSV表格的教程本教程详细介绍了将一种特殊的、包含如何创建列表和字典的复杂数据结构转换为标准的CSV表格。数据结构中,外层列表代表表格的行字典,内层列表中的则以键值对的形式表示该行中特定列的数据此,其中键为列索引。教程通过数据挖掘这一关键步骤,将行内分散的字典合并为统一的行字典,并利用Python的csv模块或Pandas库将其高效导出为CSV文件,并处理了数据不规则和列删除的情况。 理解原始数据结构

在处理复杂数据时,处理任务能够准确理解其当前格式。本教程所面对的数据结构如下所示:table = [ [{0:quot;title1quot;}, {1:quot;title2quot;}], [{0:quot;data1quot;}, {1:quot;data2quot;}], [{1:quot;more data2quot;}]]登录后复制

这种结构可以这样解读:外层列表(table):代表整个表格。列表中的每个元素都是表格的一行。内层列表(例如[{0:"title1"},{1:"title2"}]):代表表格中的数据一行。字典(例如{0:"title1"}):代表该行中的一个单元格。字典的键(如0或1)表示该单元格所属的列索引,值(如"title1")书写单元格的实际内容。

需要注意的是,由于数据可能不规则,某些行可能在特定列上没有数据(如第三行[{1:"more] data2"}],缺少列0的数据)。我们的目标就是将这种结构转换为标准的CSV格式,其中列索引(0, 1等)将成为CSV的列头。2.数据批量:核心步骤

为了将上述结构导出为CSV,我们需要将其转换为更标准的形式:一个由字典组成的列表,其中每个字典代表一行,且字典的键直接对应CSV的列名。

我们可以使用列表推导式(列表理解)高效地完成这一订单:

立即学习“Python免费学习笔记(深入)”;import json #用于仅展示订单后的数据结构 table_original = [ [{0:quot;title1quot;}, {1:quot;title2quot;}], [{0:quot;data1quot;}, {1:quot;data2quot;}], [{1:quot;more data2quot;}]]# ------------------# 将表格抢购为由字典组成的列表(每字典代表一行)# ------------------reshape_table = [ {key: value for cell_dict in row for key, value in cell_dict.items()} for row in table_original]# ------------------# ------------------# 查看楼层后的数据结构# ------------------print(json.dumps(reshape_table, indent=4))# ------------------登录后复制

执行上述代码后,reshape_table将等于:[ { quot;0quot;: quot;title1quot;, quot;1quot;: quot;title2quot; }, { quot;0quot;: quot;data1quot;, quot;1quot;: quot;data2quot; }, { quot;1quot;: quot;more data2quot; }]登录后解析网格复制逻辑:外层 for row in table_original:获取每一行的原始表格(即[{0:"title1"}, {1:"title2"}] 这样的内层列表)。内层 {key: value for cell_dict in row for key, value in cell_dict.items()}:对于当前行的内层列表(row),它会遍历其中的每个单元格字典(cell_dict,如 {0:"title1"})。然后,将这些单元格字典中的所有键值对(key:值)收集到一个新的字典中。如果相同行中存在键相同,后面的值会覆盖前面的。最终,每个原始的“行”列表都被转换成一个纸的行字典,其中键0和1现在代表了CSV的列。3. 将后续的数据导出为CSV

数据仓库完成后,我们有两种主要方法将其导出为CSV文件:使用Python内置的csv模块或使用强大的Pandas库。3.1方法一:使用csv模块(DictWriter)

csv.DictWriter是处理字典列表存放其写入CSV文件的理想工具。能够自动将字典的键映射到CSV的列头。

import csv# 使用上面收获后的数据# reshape_table = [...]output_filename_csv = quot;output_csv_module.csvquot;with open(output_filename_csv, quot;wquot;, newline=quot;quot;,encoding=quot;utf-8quot;) as file_out: # 定义CSV的列名。这些列名必须与reshape_table中字典的键匹配。 #这里我们知道列是0和1。 fieldnames = [0, 1] # extrasaction=quot;ignorequot;表示如果字典中字段名未定义的键,则忽略它们。 #restval=quot;quot;表示如果字典中缺少字段名中定义的键,则该单元格留空。 writer = csv.DictWriter(file_out,fieldnames=fieldnames, extrasaction=quot;ignorequot;,restval=quot;quot;) # 写入 CSV 文件头 writer.writeheader() #写入所有数据行 writer.writerows(reshape_table)print(fquot;数据已使用csv模块导出到{output_filename_csv}quot;)登录后复制

注意事项:newline="":在打开文件时,这是csv模块推荐的做法,防止在Windows上读取额外的空行。encoding="utf-8":明确指定编码,避免乱码问题。fieldnames:必须提供一个列表,包含所有预期的列名。这些列名将作为 CSV 文件的第一行(标题行),而DictWriter会根据这些列名从字典中对应查找的值。extrasaction="ignore":当字典中包含fieldnames未指定的键时,DictWriter会默认抛出错误。设置为"ignore"可以忽略这些额外的键。restval="":当字典中缺少fieldnames中指定的键时,DictWriter会默认命名单元格留空。3.2方法二:使用Pandas库

Pandas 是一个功能强大的数据分析库,它提供了一个DataFrame对象,非常适合处理数据表格,并能轻松导出为CSV。

import pandas#使用上面囤后的数据# reshape_table = [...]output_filename_pandas = quot;output_pandas.csvquot;#将囤后的列表数据转换为Pandas DataFramedf = pandas.DataFrame(reshape_table)#DataFrame导出为CSV文件#index=False 表示不将DataFrame的行索引写入CSV文件df.to_csv(output_filename_pandas,index=False, coding=quot;utf-8quot;)print(fquot;数据已使用 Pandas 导出到 {output_filename_pandas}quot;)登录后复制

注意事项:pandas.DataFrame(reshape_table):Pandas 能够智能地识别字典列表,将其键作为列名,值作为数据。index=False: 默认情况下,to_csv会写入DataFrame的行索引作为CSV的第一列。如果不需要,应将其设置为False。Pandas在处理挖掘值时会自动填充NaN,在CSV中通常会吸收空白。4. 预期CSV输出

无论使用哪种方法,生成的CSV文件内容都会是相同的,如下所示:0,1title1,title2data1,data2,more数据2登录后复制

这就是我们想要的表格结构,其中第一行是列头(0和1),后续行是数据,并且恢复的数据(如第三行中列0的数据)被正确地留空。总结

将复杂数据结构转换为标准CSV格式的关键相当于数据仓库。通过将原始的行内单元格字典合并为统一的行字典,我们创建了一个适合CSV导出的中间数据结构。另外,或者是使用Pyth关于内置的csv模块(提供更精细的控制)还是Pandas库(提供更简洁的API和强大的数据处理能力),快速、准确地导出数据为所需的CSV文件。理解原始数据的实际意义以及成功过程的逻辑,是处理此类转换任务的基础。

以上就是Python中将复杂的数据转换为CSV表格教程的详细内容,更多请关注乐哥常识网其他相关文章!

以上就是Python中将复杂的数据转换为CSV表格教程的详细内容,更多请关注乐哥常识网其他相关文章!

Python中将复杂
Decktopus AI如何设计促进高价服务签约的FAQ页?
相关内容
发表评论

游客 回复需填写必要信息