欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 根據(jù)csv表頭、列號(hào)讀取數(shù)據(jù)的實(shí)現(xiàn)

 更新時(shí)間:2022年05月16日 09:15:35   作者:lovelife110  
這篇文章主要介紹了python 根據(jù)csv表頭、列號(hào)讀取數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

根據(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)文章

最新評(píng)論