前言
Selecting的部分真是用的最多的地方岗宣,所以也是最最熟悉的部分,這里不加贅述過于基礎的東西淋样,會快速的略過那些部分耗式,但是會把一些不常用的東西、新奇的東西羅列出來趁猴。
基礎:
df.loc, df.iloc, df.ix
df[int], df[int,int], df[:,:,int]
df[df.col > 0], df[() & ()], df[() | ()]
df[df.col.isin([1,2,3,4])]
不常用的:
df.loc[lambda x: x.col >0,:]
df.reindex()
# 可通過給一個新的(可大于現有長度)的index刊咳,生成NaN的行(那豈不是會亂序,碎碎念,要不就只能在最后加NaN)df.set_index(col)
# 可直接將某列/多列 設為indexdf.sample()
# 隨機抽樣,可用size也可用frac儡司,還可賦予權重df[df['col'].map(lambda x: x.startswith('t')
# 用map來更靈活的生成布爾值df.where(df > 0)
# 等同于df[df >0]
娱挨,而且可用args對False的值進行替換df.mask(df > 0)
# 等同于df.where(df <= 0)
, 與上者是相反的布爾操作df.query('(a < b) & (b < c)')
# 類似于建立了一個df內部的SQL語言,abc都是列名枫慷,等價于df[(df.a < df.b) & (df.b < df.c)]
(實驗性,不深入研究)df.lookup([1,2,3],['a','b','c'])
# 等價于df.loc[1,'a'], df.loc[2,'b'], df.loc[3,'c']
让蕾,傳入兩個等長的list,可以自動進行zip且索引或听。
關于df.where
用法較多探孝,這里簡單講一講
基本的用法:
df.where(df>0)
,但是同樣可以是用df.where(df < 0 , -df)
誉裆,相當于把整個表格都轉換成了負數顿颅。
或者df3.where(lambda x: x > 4, lambda x: x + 10)
對其進行操作,只對大于4的數字加10.
而且也會自動進行比對(alignment)足丢。
例如df2[ df2[1:4] > 0 ] = 3
只會操作df2的1->4 行粱腻。