Python Pandas讀取修改excel操作攻略
環境:python 3.6.8
以某米賽爾號舉個例子吧:
>>> pd.read_excel('1.xlsx', sheet_name='Sheet2') 名字等級 屬性1屬性2天賦 0四九幻曦100自然None21 1聖甲狂戰100戰鬥None0 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水None28
現在我們將它儲存
data.to_excel('1.xlsx', sheet_name='Sheet1', index=False, header=True)
index:預設為 True
, 是否加行索引, 直接上圖吧!
左為 False
, 右為 True
header:預設為 True
, 是否加列標, 上圖吧!
左為 False
, 右為 True
而 io, sheet_name
引數同函式 pd.read_excel()
如果我們多捕捉幾隻或者多加幾種屬性怎麼辦呢?這裡給出參考:
新增列資料:
>>> data['特性'] = ['瞬殺', 'None', '炎火'] >>> data 名字等級 屬性1屬性2天賦特性 0艾歐裡婭100自然冰29瞬殺 1泰格爾80電戰鬥16None 2布魯克克100水None28炎火
新增行資料,這裡行的num為excel中自動給行加的id數值
data.loc[行的num] = [值1, 值2, ...], (注意與 .iloc
的區別)
>>> data.loc[3] = ['小火猴', 1, '火', 'None', 31, 'None'] >>> data 名字等級 屬性1屬性2天賦特性 0艾歐裡婭100自然冰29瞬殺 1泰格爾80電戰鬥16None 2布魯克克100水None28炎火 3小火猴1火None31None
說完了增加一行或一列,那怎樣刪除一行或一列呢?可以使用 .drop()
函式
>>> # 刪除列, 需要指定axis為1,當刪除行時,axis為0 >>> data = data.drop('屬性1', axis=1) # 刪除`屬性1`列 >>> data 名字等級屬性2天賦特性 0艾歐裡婭100冰29瞬殺 1泰格爾80戰鬥16None 2布魯克克100None28炎火 3小火猴1None31None >>> # 刪除第3,4行,這裡下表以0開始,並且標題行不算在類, axis用法同上 >>> data = data.drop([2, 3], axis=0) >>> data 名字等級 屬性2天賦特性 0艾歐裡婭100冰29瞬殺 1泰格爾80戰鬥16None >>> # 儲存 >>> data.to_excel('2.xlsx', sheet_name='Sheet1', index=False, header=True)
大傢俱體可以參考官網提供的API: http://pandas.pydata.org/pand...