python 根據(jù)csv表頭、列號(hào)讀取數(shù)據(jù)的實(shí)現(xiàn)
根據(jù)csv表頭、列號(hào)讀取數(shù)據(jù)的實(shí)現(xiàn)
讀取csv文件
cvs數(shù)據(jù)截圖如下

設(shè)置index_col=0,目的是設(shè)置第一列name為index(索引),方便下面示例演示
data = pandas.read_csv(input1, index_col=0)
輸出結(jié)果
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
根據(jù)表頭獲取列數(shù)據(jù)
data[['o_price', 'quan'] # 或者 data.loc[:, ['o_price', 'quan']
輸出結(jié)果
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
根據(jù)列號(hào)讀取列數(shù)據(jù)
data.iloc[:, [3, 4]]
輸出結(jié)果
date quan
name
wood 2006 797
chair 2006 799
bed 2006 795
lamp 2006 800
sofa 2002 3094
table 2002 3093
根據(jù)index名獲取行數(shù)據(jù)
data.loc[['wood', 'sofa'], :]
輸出結(jié)果
price o_price date quan
name
wood 85.00 49.99 2006 797
sofa 699.99 269.99 2002 3094
根據(jù)列號(hào)讀取行數(shù)據(jù)
data.iloc[[0, 1], :]
輸出結(jié)果
price o_price date quan
name
wood 85.0 49.99 2006 797
chair 102.5 49.99 2006 799
iloc和loc區(qū)別
loc是根據(jù)dataframe的具體標(biāo)簽選取列,而iloc是根據(jù)標(biāo)簽所在的位置,從0開(kāi)始計(jì)數(shù)。
讀取csv文件并輸出特定列
其實(shí),最開(kāi)始好不容易輸出了指定列,結(jié)果第二天不小心刪了什么東西,然后就一直報(bào)錯(cuò)。
看上去和前一天能正常輸出的沒(méi)有什么差別。折騰了一天多總算是找到問(wèn)題是什么了,是個(gè)很簡(jiǎn)單的問(wèn)題。
其實(shí)不是錯(cuò)誤,只是因?yàn)檫x用的讀取方式不同,所以一直報(bào)錯(cuò)。
源代碼如下
import csv
import pandas as pd?
sheet_name = "員工信息表.csv"
?
#數(shù)據(jù)文件有問(wèn)題數(shù)據(jù)
with open(sheet_name,encoding = "utf-8",errors = "ignore") as f:
? ??
? ? #可通過(guò)列名讀取列值,表中有空值
? ? data= csv.DictReader(_.replace("\x00","") for _ in f)
? ? headers = next(data)
? ? print(headers)
? ? for row in data:
? ? ? ? print(row)
? ? ? ? if row['員工狀態(tài)'] == '2':
? ? ? ? ? ? print(row)
?
? ? #不可通過(guò)列名讀取列值,通過(guò)第幾列來(lái)讀取
? ? #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"會(huì)報(bào)錯(cuò):
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte
通過(guò)csv.reader讀取csv文件,然后使用列名row['員工狀態(tài)']輸出列值會(huì)報(bào)錯(cuò):
“TypeError: list indices must be integers or slices, not str”
根據(jù)這個(gè)報(bào)錯(cuò)百度了好久,一直沒(méi)有找到解決方法。
雖然現(xiàn)在最終效果達(dá)到了,但是并不清楚具體原因。
源數(shù)據(jù)表里面問(wèn)題好多啊,感覺(jué)需要先做數(shù)據(jù)清洗。唉!好難??!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python2.7使用scapy發(fā)送syn實(shí)例
這篇文章主要介紹了python2.7使用scapy發(fā)送syn實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python使用單例模式創(chuàng)建類(lèi)的實(shí)現(xiàn)示例
本文詳細(xì)介紹了Python中實(shí)現(xiàn)單例模式的多種方式,包括元類(lèi)、threading.Lock、模塊、importlib、__new__方法和裝飾器等,感興趣的可以了解一下2024-12-12
python datetime處理時(shí)間小結(jié)
這篇文章主要介紹了python datetime處理時(shí)間小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python使用Apache Kafka時(shí)Poll拉取速度慢的解決方法
在使用Apache Kafka時(shí),poll方法拉取消息速度慢常見(jiàn)于網(wǎng)絡(luò)延遲、消息大小過(guò)大、消費(fèi)者配置不當(dāng)或高負(fù)載情況,本文提供了優(yōu)化消費(fèi)者配置、并行消費(fèi)、優(yōu)化消息處理邏輯和監(jiān)控調(diào)試的解決方案,并附有Python代碼示例和相關(guān)類(lèi)圖、序列圖以幫助理解和實(shí)現(xiàn)2024-09-09
Python對(duì)列表的操作知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理了關(guān)于Python對(duì)列表的操作知識(shí)點(diǎn)總結(jié)以及實(shí)例代碼運(yùn)用,需要的朋友們跟著學(xué)習(xí)下。2019-08-08
詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別
下面小編就為大家分享一篇詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04

