【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。

问题描述

在处理一个数据收集工作任务上,收集到的数据内容格式都不能直接对应到数据库中的表格内容。

 

比如:

第一种情况:服务名作为第一列内容,然后之后每一列为一个人名,1:代表此人拥有这个服务,0:代表不拥有。

第二种情况:服务名称为第一列,第二列紧跟人名,并均有重复的情况。

** 以上两种情况,都需要转换为 Name所对应的Services数据(多个Services用逗号连接在一起)。

 

由于数据量大,如果人工处理,工作量非常巨大,机械性,重复且易出错。于是,借助Python Pandas,短短几句代码就可以实现!

 

问题解答

1: 通过引入 pandas 组件,读取CSV文件

import pandas as pd

 

df = pd.read_csv('service.csv')

2:第一种情况:使用双层 for 循环

  • 第一层循环文件中的全部列,并且增加一个“行索引” rowIdx ,用于标记并获取当前行所代表的Service名称
  • 第二层循环列中的每一个单元格,判断值是否等于1,相等则取出Service名并进行追加
  • 第二层循环完成后,对 services 字符串的最后一个逗号进行清除
  • 根据固定格式,正常UPDATE SQL语句


for column in df.columns: 
    services =""
    rowIdx =0
    for value in df[column]:
        if value ==1.0:
            services += df['Services'][rowIdx] + ","               
        rowIdx += 1
    services = services.rstrip(",")
    
    print(f"UPDATE [dbo].[NameServiceMapping] SET Services='{services}' WHERE NAME ='{column}'")
    print("\n")

 

3:第二种情况:使用一个 For 加 字典数据结构 {}

  • 读取第二列 Name, 作为字典 d 的Key
  • 判断字典 d 中是否已经存在这个Name的Key, 使用 __contains__ 进行判断
  • 如存在,则追加第一列中的Service。
  • 反之,则为字典新加一个Key。
  • 最后循环字典 d, 并生成 UPDATE SQL语句
d = {}
rowindex =0
for name in df['Name']:
    if(d.__contains__(name)):
        d[name] = d[name] + ","+df['Services'][rowindex]
    else:
        d[name] = df['Services'][rowindex]
    rowindex +=1
for key in d:
    print(f"UPDATE [dbo].[NameServiceMapping] SET Services='{d[key]}' WHERE NAME ='{key}'")
    print("\n")

 

3:执行结果

第一种结果:

 

第二种结果:

 

 

参考资料

Python 字典(Dictionary):https://www.runoob.com/python/python-dictionary.html

 



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
9月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
389 100
|
9月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
598 95
|
10月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
396 104
|
10月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
694 99
|
9月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
511 88
|
9月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1489 68
|
10月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
1029 7
|
10月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1592 102
|
10月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
501 104
|
10月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
390 103

推荐镜像

更多