1.dataframe可以看數據庫里面的一張table
2.更注重於行的篩選,對於列可以看做是屬性
3.所以有dataframe.colname,dataframe[:,colname]來提取整個列的操作
都是先行后列
4.利用標簽來選擇特定的行列dataframe.loc[rowname,colname]
5.默認是對於行進行篩選,所以dataframe.loc[:3],進行切片的時候是默認切行
6.要是想把列加上應該這么寫dataframe.loc[rowrange,colrange](標簽篩選)
7.還有一個選取是datafram.iloc[](坐標篩選)
8.接下來是條件篩選:本質上就是將判斷的結果擴展到對象中的每一個元素:dataframe[]
時刻記住是默認對行進行篩選!
比如
.ipynb
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,6),columns=['a','b','c','d','e','f'])
df
df['b']>0
#這里只會保留是true的行
df.loc[1]>0
#這里只會保留是true的列
df.loc[:,(df.loc[1]>0)&(df.loc[3]>0)]
注意,用數據庫里數據表的角度來看dataframe而不是把它簡單地看成一個二維數據組
還有一種選擇(邏輯判斷)數據的方法: df=df[df['satisfaction_level']<=1][df['salary']!='nme'][df['department']!='sale']
df[df['time']>20],比較運算符可以有:>,<,>=,<=,==.篩選出所有time屬性大於20的行(元組)
df[(df['time']>20|(df['distance']<100)],可以搭配邏輯運算符,來篩選行
df[['time','distance']][df['year']>14],在指定多列(多個列用列表表示)里面篩選行 也可用df.loc[df['year']>14,(['time','distance'])]
選擇某列等於多個值時(篩選列):df[df['time'].isin([12,13,14])]
模糊篩選:df.loc[df['time'].str.contains('45')] 這里只能用df.loc。另外,可以使用| 來進行多個條件的篩選。這里是匹配開頭。 df.loc[(df['區域'.str.contains('華東|北')])& (df['單價'>1500]).sort_values(by='單價')(這里匹配以華東和北開頭的字符串)