>>> pd.read_excel('1.xlsx', sheet_name='Sheet2')
名字 等級(jí) 屬性1 屬性2 天賦
0 四九幻曦 100 自然 None 21
1 圣甲狂戰(zhàn) 100 戰(zhàn)斗 None 0
2 時(shí)空界皇 100 光 次元 27
我們?cè)谶@里使用了pd.read_excel()
函數(shù)來讀取excel王暗,來看一下read_excel()
這個(gè)方法的API苞笨,這里只截選一部分經(jīng)常使用的參數(shù):
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
当宴,則返回全表
如果需要返回多個(gè)表, 可以將sheet_name
指定為一個(gè)列表, 例如['sheet1', 'sheet2']
可以根據(jù)sheet
的名字字符串或索引來值指定所要選取的sheet
>>> # 如:
>>> pd.read_excel('1.xlsx', sheet_name=0)
>>> pd.read_excel('1.xlsx', sheet_name='Sheet1')
>>> # 返回的是相同的 DataFrame
name:如果沒有表頭, 可用此參數(shù)傳入列表做表頭
header:指定數(shù)據(jù)表的表頭,默認(rèn)值為0, 即將第一行作為表頭
index_col:用作行索引的列編號(hào)或者列名请垛,如果給定一個(gè)序列則有多個(gè)行索引遏暴。一般可以設(shè)定index_col=False
指的是pandas不適用第一列作為行索引班挖。usecols:讀取指定的列, 也可以通過名字或索引值
>>> # 如:
>>> pd.read_excel('1.xlsx', sheet_name=1, usecols=['等級(jí)', '屬性1'])
>>> pd.read_excel('1.xlsx', sheet_name=1, usecols=[1,2])
>>> # 返回的是相同的 DataFrame
直到某一天泰格爾升了一級(jí), 可以這樣改一下, 當(dāng)然用.iloc
或.loc
對(duì)象都可以
>>> # 讀取文件
>>> data = pd.read_excel("1.xlsx", sheet_name="Sheet1")
>>> # 找到 等級(jí) 這一列,再在這一列中進(jìn)行比較
>>> data['等級(jí)'][data['名字'] == '泰格爾'] += 1
>>> print(data)
>>> data
名字 等級(jí) 屬性1 屬性2 天賦
0 艾歐里婭 100 自然 冰 29
1 泰格爾 81 電 戰(zhàn)斗 16
2 布魯克克 100 水 None 28
保存
data.to_excel('1.xlsx', sheet_name='Sheet1', index=False, header=True)
index:默認(rèn)為True
, 是否加行索引
左為
False
, 右為True
header:默認(rèn)為True
, 是否加列標(biāo)
左為
False
, 右為True
而io, sheet_name
參數(shù)用法同函數(shù)pd.read_excel()
如果我們多捕捉幾只或者多加幾種屬性怎么辦呢泉孩?這里給出參考:
新增列數(shù)據(jù):
data['列名稱'] = [值1, 值2, ......]
>>> data['特性'] = ['瞬殺', 'None', '炎火']
>>> data
名字 等級(jí) 屬性1 屬性2 天賦 特性
0 艾歐里婭 100 自然 冰 29 瞬殺
1 泰格爾 80 電 戰(zhàn)斗 16 None
2 布魯克克 100 水 None 28 炎火
新增行數(shù)據(jù)硼端,這里行的num為excel中自動(dòng)給行加的id數(shù)值
data.loc[行的num] = [值1, 值2寓搬, ...], (注意與.iloc
的區(qū)別)
>>> data.loc[3] = ['小火猴', 1, '火', 'None', 31, 'None']
>>> data
名字 等級(jí) 屬性1 屬性2 天賦 特性
0 艾歐里婭 100 自然 冰 29 瞬殺
1 泰格爾 80 電 戰(zhàn)斗 16 None
2 布魯克克 100 水 None 28 炎火
3 小火猴 1 火 None 31 None
說完了增加一行或一列灼捂,那怎樣刪除一行或一列呢殴胧?可以使用.drop()
函數(shù)
>>> # 刪除列, 需要指定axis為1职祷,當(dāng)刪除行時(shí)盟榴,axis為0
>>> data = data.drop('屬性1', axis=1) # 刪除`屬性1`列
>>> data
名字 等級(jí) 屬性2 天賦 特性
0 艾歐里婭 100 冰 29 瞬殺
1 泰格爾 80 戰(zhàn)斗 16 None
2 布魯克克 100 None 28 炎火
3 小火猴 1 None 31 None
>>> # 刪除第3,4行,這里下表以0開始脏嚷,并且標(biāo)題行不算在類, axis用法同上
>>> data = data.drop([2, 3], axis=0)
>>> data
名字 等級(jí) 屬性2 天賦 特性
0 艾歐里婭 100 冰 29 瞬殺
1 泰格爾 80 戰(zhàn)斗 16 None
>>> # 保存
>>> data.to_excel('2.xlsx', sheet_name='Sheet1', index=False, header=True)
大家具體可以參考官網(wǎng)提供的API:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#pandas.read_excel