我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python根据csv表头、列号读取数据的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python根据csv表头、列号读取数据的实现

根据csv表头、列号读取数据的实现

读取csv文件

cvs数据截图如下


在这里插入图片描述

设置index_col=0,目的是设置第一列name为index(索引),方便下面示例演示

data = pandas.read_csv(input1, index_col=0)

输出结果

        price  o_price  date  quan
name                              
wood    85.00    49.99  2006   797
chair  102.50    49.99  2006   799
bed     77.00    49.99  2006   795
lamp   162.50    49.99  2006   800
sofa   699.99   269.99  2002  3094
table  602.00   269.99  2002  3093

根据表头获取列数据

data[['o_price', 'quan']
# 或者
data.loc[:, ['o_price', 'quan']

输出结果

       o_price  quan
name                
wood     49.99   797
chair    49.99   799
bed      49.99   795
lamp     49.99   800
sofa    269.99  3094
table   269.99  3093

根据列号读取列数据

data.iloc[:, [3, 4]]

输出结果

       date  quan
name             
wood   2006   797
chair  2006   799
bed    2006   795
lamp   2006   800
sofa   2002  3094
table  2002  3093

根据index名获取行数据

data.loc[['wood', 'sofa'], :]

输出结果

       price  o_price  date  quan
name                             
wood   85.00    49.99  2006   797
sofa  699.99   269.99  2002  3094

根据列号读取行数据

data.iloc[[0, 1], :]

输出结果

       price  o_price  date  quan
name                             
wood    85.0    49.99  2006   797
chair  102.5    49.99  2006   799

iloc和loc区别

loc是根据dataframe的具体标签选取列,而iloc是根据标签所在的位置,从0开始计数。

读取csv文件并输出特定列

其实,最开始好不容易输出了指定列,结果第二天不小心删了什么东西,然后就一直报错。

看上去和前一天能正常输出的没有什么差别。折腾了一天多总算是找到问题是什么了,是个很简单的问题。

其实不是错误,只是因为选用的读取方式不同,所以一直报错。

源代码如下

import csv
import pandas as pd 
sheet_name = "员工信息表.csv"
 
#数据文件有问题数据
with open(sheet_name,encoding = "utf-8",errors = "ignore") as f:
    
    #可通过列名读取列值,表中有空值
    data= csv.DictReader(_.replace("\x00","") for _ in f)
    headers = next(data)
    print(headers)
    for row in data:
        print(row)
        if row['员工状态'] == '2':
            print(row)
 
    #不可通过列名读取列值,通过第几列来读取
    #data =csv.reader(_.replace("\x00","") for _ in f)
    headers = next(data)
    print(headers)
    for row in data:
        print(row)
        if row[12]=='2':
            print(row)

读取csv文件需要采用:

with open(sheet_name,encoding = "utf-8",errors = "ignore") as f:

如果不加errors = "ignore"会报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte

通过csv.reader读取csv文件,然后使用列名row['员工状态']输出列值会报错:

“TypeError: list indices must be integers or slices, not str”

根据这个报错百度了好久,一直没有找到解决方法。

虽然现在最终效果达到了,但是并不清楚具体原因。

源数据表里面问题好多啊,感觉需要先做数据清洗。唉!好难啊!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python根据csv表头、列号读取数据的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python读取CSV数据的实用技巧分享

python 中读取 csv 数据的方法分两种:内置 csv 模块,适用于小型 csv 文件,按行迭代数据;pandas 库,提供 read_csv() 函数,可轻松将 csv 数据加载到 dataframe 中进行处理。Python 读取
Python读取CSV数据的实用技巧分享
2024-04-04

Python实现列表转换成字典数据结构的方法

本文实例讲述了Python实现列表转换成字典数据结构的方法。分享给大家供大家参考,具体如下:''' [{'symbol': 101, 'sort': 1, 'name': 'aaaa'},{'symbol': 102, 'sort': 2,
2022-06-04

vbs中如何使用adox实现提取数据库表名和列名的类

这篇文章主要介绍了vbs中如何使用adox实现提取数据库表名和列名的类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。