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)文章
python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡(jiǎn)單分類
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡(jiǎn)單分類,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python開(kāi)發(fā)之pip安裝及使用方法詳解
這篇文章主要介紹了Python開(kāi)發(fā)之pip安裝及使用方法詳解,需要的朋友可以參考下2020-02-02Python實(shí)現(xiàn)的將文件每一列寫(xiě)入列表功能示例【測(cè)試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)的將文件每一列寫(xiě)入列表功能,涉及Python文件讀取、遍歷、序列追加、賦值等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03解決nohup執(zhí)行python程序log文件寫(xiě)入不及時(shí)的問(wèn)題
今天小編就為大家分享一篇解決nohup執(zhí)行python程序log文件寫(xiě)入不及時(shí)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python django框架應(yīng)用中實(shí)現(xiàn)獲取訪問(wèn)者ip地址示例
這篇文章主要介紹了Python django框架應(yīng)用中實(shí)現(xiàn)獲取訪問(wèn)者ip地址,涉及Python Request模塊相關(guān)函數(shù)使用技巧,需要的朋友可以參考下2019-05-05Python 模擬生成動(dòng)態(tài)產(chǎn)生驗(yàn)證碼圖片的方法
這篇文章主要介紹了Python 模擬生成動(dòng)態(tài)產(chǎn)生驗(yàn)證碼圖片的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Python利用request庫(kù)實(shí)現(xiàn)翻譯接口
這篇文章主要為大家詳細(xì)介紹了Python如何利用request庫(kù)打造自己的翻譯接口,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04