python/numpy/pandas資料操作知識與技巧
阿新 • • 發佈:2018-12-30
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 callelection.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