1. 程式人生 > >python/numpy/pandas資料操作知識與技巧

python/numpy/pandas資料操作知識與技巧

pandas針對dataframe各種操作技巧集合:

filtering:

一般地,使用df.column > xx將會產生一個只有boolean值的series,以該series作為dataframe的選擇器(index/slicing)將直接選中該series中所有value為true的記錄。

df[df.salt>60]  # 返回所有salt大於60的行
df[(df.salt>50)&(df.eggs < 300)] # 返回salt大於50並且eggs小於300的行
print(df2.loc[:,df2.all()]) # 列印不含0值的所有列(所有行)
print
(df2.loc[:,df2.any()]) #列印所有含非0值的所有列(所有行) print(df2.loc[:,df2.isnull().any()]) #列印所有包含一個NaN值的列(所有行) print(df2.loc[:,df2.notnull().all()]) #列印所有滿值列(不含空值)(所有行)
df.dropna(how='any') # 將任何含有nan的行刪除

filter過濾並賦值

# Create the boolean array: too_close
too_close = election['margin']<1
# Assign np.nan to the 'winner' column where the results were too close to call
election.loc[too_close,'winner'] = np.nan # 等價於以下,需要注意的是[column][row]和loc[row,column]是反過來的哦!!!! election['winner'][too_close] = np.nan

dict(list(zip()))建立DataFrame

就地修改某列資料型別為數值型,無法parse成功的則設為NaN

df['salt'] = pd.to_numeric(df['salt'],errors='coerce')

 setting index with combined column:列組合作為index(比如股票名稱+日期)

獲取df.loc['rowname','colname']==df.iloc[x,y]中的x和y

x = election.index.get_loc('Bedford') # 行名稱為Bedford
y = election.columns.get_loc('winner') #列名稱為winner
# 這時:
election.loc['Bedford','winner'] == election.iloc[x,y]
election.winner[too_close] = np.nan