Python中Pandas讀取修改excel操作攻略(程式碼範例)

不言
發布: 2019-02-20 14:36:23
轉載
8085 人瀏覽過

這篇文章帶給大家的內容是關於Python中Pandas讀取修改excel操作攻略(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

環境:python 3.6.8

以某米賽爾舉個例子吧:

Python中Pandas讀取修改excel操作攻略(程式碼範例)

Python中Pandas讀取修改excel操作攻略(程式碼範例)

>>> pd.read_excel('1.xlsx', sheet_name='Sheet2')
     名字   等级 属性1   属性2  天赋
0  四九幻曦  100  自然  None  21
1  圣甲狂战  100  战斗  None   0
2  时空界皇  100   光    次元  27
登入後複製

我們在這裡使用了pd.read_excel()函數來讀取excel,來看read_excel()這個方法的API,這裡只截選一部分常用的參數:

pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)
登入後複製
io:很明顯, 是excel檔案的路徑名字字串

(有中文的話python2的老鐵需要使用decode()來解碼成unicode字串)
例如:

>>> pd.read_excel('例子'.decode('utf-8))
登入後複製
sheet_name:傳回指定的sheet
如果將sheet_name指定為None,則傳回全表
如果需要傳回多個表, 可以將sheet_name指定為清單, 例如['sheet1', 'sheet2']

可以根據sheet的名字字串或索引來值指定所要選取的sheet

#
>>> # 如:
>>> pd.read_excel('1.xlsx', sheet_name=0)
>>> pd.read_excel('1.xlsx', sheet_name='Sheet1')
>>> # 返回的是相同的 DataFrame
登入後複製
header:指定資料表的表頭,預設值為0, 即將第一行作為表頭
usecols:讀取指定的列, 也可以透過名字或索引值
>>> # 如:
>>> pd.read_excel('1.xlsx', sheet_name=1, usecols=['等级', '属性1'])
>>> pd.read_excel('1.xlsx', sheet_name=1, usecols=[1,2])
>>> # 返回的是相同的 DataFrame
登入後複製

直到某一天泰格爾升了一級, 可以這樣改一下, 當然用.iloc.loc物件都可以

>>> # 读取文件
>>> data = pd.read_excel("1.xlsx", sheet_name="Sheet1")

>>> # 找到 等级 这一列,再在这一列中进行比较
>>> data['等级'][data['名字'] == '泰格尔'] += 1
>>> print(data)
登入後複製

LOOK!他升級了! !

>>> data
     名字   等级 属性1   属性2  天赋
0  艾欧里娅  100  自然     冰  29
1   泰格尔   81   电    战斗  16
2  布鲁克克  100   水  None  28
登入後複製

現在我們將它保存

data.to_excel('1.xlsx', sheet_name='Sheet1', index=False, header=True)
登入後複製
index:預設為True, 是否加行索引, 直接上圖吧!
Python中Pandas讀取修改excel操作攻略(程式碼範例)
左為False, 右為True
header:預設為True, 是否加列標, 上圖吧!
Python中Pandas讀取修改excel操作攻略(程式碼範例)左為False, 右為True
#而io, sheet_name參數用法同函數pd. read_excel()

如果我們多捕捉幾隻或多加幾種屬性怎麼辦呢?這裡給參考:

新增列資料:
data['列名稱'] = [值1, 值2, ......]
>>> data['特性'] = ['瞬杀', 'None', '炎火']
>>> data
     名字   等级 属性1   属性2  天赋    特性
0  艾欧里娅  100  自然     冰  29    瞬杀
1   泰格尔   80   电    战斗  16  None
2  布鲁克克  100   水  None  28    炎火
登入後複製

新增行數據,這裡行的num為excel中自動給行加的id數值
data.loc[行的num] = [值1, 值2, ...], (注意與.iloc的區別)

>>> data.loc[3] = ['小火猴', 1, '火', 'None', 31, 'None']
>>> data
     名字   等级 属性1   属性2  天赋    特性
0  艾欧里娅  100  自然     冰  29    瞬杀
1   泰格尔   80   电    战斗  16  None
2  布鲁克克  100   水  None  28    炎火
3   小火猴    1   火  None  31  None
登入後複製

說完了增加一行或一列,那要如何刪除一行或一列呢?可以使用.drop()函數

>>> # 删除列, 需要指定axis为1,当删除行时,axis为0
>>> data = data.drop('属性1', axis=1) # 删除`属性1`列
>>> data
     名字   等级   属性2  天赋    特性
0  艾欧里娅  100     冰  29    瞬杀
1   泰格尔   80    战斗  16  None
2  布鲁克克  100  None  28    炎火
3   小火猴    1  None  31  None

>>> # 删除第3,4行,这里下表以0开始,并且标题行不算在类, axis用法同上
>>> data = data.drop([2, 3], axis=0)
>>> data
     名字   等级 属性2  天赋    特性
0  艾欧里娅  100   冰  29    瞬杀
1   泰格尔   80  战斗  16  None

>>> # 保存
>>> data.to_excel('2.xlsx', sheet_name='Sheet1', index=False, header=True)
登入後複製

以上是Python中Pandas讀取修改excel操作攻略(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板