pandas 6 - 索引切片選擇( tcy)
阿新 • • 發佈:2018-12-15
索引切片選擇 2018/12/3 2018/12/14
1.Series選擇:
操作 | 句法 | 例項 | 結果 | 說明 |
- | - | - | - | s=pd.Series([0,1,2,3,4],index=list('abcde')) |
標籤s/s.loc | s[單個標籤] | s['c'] , s.loc['c'] |
2 | 如未包含標籤則引發異常 |
標籤s/s.loc | s[標籤切片] | s['c':'e']=6 | 2,3,4 | 標籤切片包含末端‘e’; |
標籤s/s.loc | s[標籤列表] | s[['c','d','e']] | 2,3,4 | 標籤不存在拋異常。錯誤用法s[('c','d','e')] |
切片s/s.iloc | s[n-1] | s[2],s.iloc[2] | 2 | - |
切片s/s.iloc |
s[切片] | s[2:] | 2,3,4 | 選擇第3,4,5行資料 |
切片s/s.iloc | - | s[:3] , s[-3:] | - | 選擇前,後3個數據 |
bool-s/s.iloc | s[布林向量] | s[s>1] , s.loc[s>1] | 2,3,4 | 選擇s>1的資料2,3,4個數據(第3,4,5行) |
屬性訪問 | s.a | s.c | 2 | - |
get-函式 | s.get(label) | s.get('c') | 2 | 缺少標籤返回None或指定預設值 |
2.資料幀DataFrame選擇:-彙總表
No |
函式 | df[] | df.loc[] | df.iloc[] | df.at[] | df.iat[] |
1 | 用途 | 選擇行或列 | 選擇行列 | 選擇行列 | 標量 | 標量 |
2 | 索引數值 | 行索引int或str; | 索引是行名,列名 | 索引是數值 | 索引是行名,列名 | 索引是數值 |
列索引是行,列名 | - | - | - | - | ||
3 | 選擇標量 | - | df.loc['b','C'] | df.iloc[1,2] | df.at['b','C'] | df.iat[1,2] |
選擇標量 | - | - | - | df.loc['b'].iat[2] | df.iloc[1].at['C'] | |
4 | 選擇行 | df[0:1]或df['a':'a'] | df.loc['b'] | df.iloc[1] | - | - |
選擇行 | df[0:3]或df['a':'c'] | df.loc[['b','c']] | df.iloc[[1,3]] | - | - | |
選擇行 | df.loc['a':'c'] | df.iloc[1:4] | - | - | ||
5 | 選擇列 | df['A']或df.A | df.loc[:,'B'] | df.iloc[:,1] | - | - |
選擇列 | df[['A','C']] | df.loc[:,['B','C']] | df.iloc[:,[1,2]] | - | - | |
選擇列 | - | df.loc[:,'A':'C'] | df.iloc[:,0:3] | - | - | |
6 | 選擇行列 | - | df.loc['a':'c','A':'C'] | df.iloc[0:3,0:3] | - | - |
選擇行列 | - | df.loc['a':'c',['A','C']] | df.iloc[0:3,[0,2]] | - | - | |
選擇行列 | - | df.loc[['a','c'],'A':'C'] | df.iloc[[0,2],0:3] | - | - | |
選擇行列 | - | df.loc['a','A':'C'] | df.iloc[0,0:3] | - | - | |
7 | 布林索引 | df[b1],df[df.A>0] 行 | df.loc[b1,b2] | df.iloc[b1,b2] | - | - |
df[df['B'].isin([6,7])]行 | b1=np.array([0,1,0,1,0],dtype=bool) | b2=np.array([1,0,1,0],dtype=bool) | ||||
注意: | ||||||
df=pd.DataFrame(np.arange(20).reshape((5,4),order='F'),index=list('abcde'),columns=list('ABCD')) | ||||||
返回值:數值,系列,資料幀;當標籤列表返回系列時,若想返回資料幀外加一層中括號。 | ||||||
df[0]或df['a']錯誤用法;當有分號不能外加中括號;都可以檢視設定資料。 |
2.2.例項:
df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
index=[4, 5, 6], columns=['A', 'B', 'C'])
# 例項1:
df.loc[5].at['B'] # 獲取標量值: 4
df.loc[5].iat[1] # 獲取標量值:4
df.iloc[1,1] # 4
df.iat[1,1]=4 # 4
# 例項2:
df.loc[dates[0]] # 按標籤選擇:獲取第一行
df.iloc[2] # 通過傳遞的整數的位置
df.loc[:,['A','B']] # 按標籤選擇:獲取第A,B列
df.loc['20181015',['A','B']] # 按標籤選擇-減少返回物件的尺寸
df.iloc[3:5,0:2] # 通過整數切片
df.iloc[[1,2,4],[0,2]] # 通過整數位置位置列表
# 例項3:使用isin()過濾方法
df2 = df.copy()
df2['D'] = ['one','two','three']
df2[df2['D'].isin(['two','three'])]
'''
A B C D
5 0 4 1 two
6 10 20 30 three'''
# 例項4:布林索引-使用單個列的值來選擇資料。
df[df.B >=4 ]
# A B C
# 5 0 4 1
# 6 10 20 30
df.loc[[False, False, True]]#選取第3行
df.loc[df['B'] >4, ['C']] #一個值返回為資料幀
# 例項5:select_dtypes() 選擇顯示特定資料型別
# 要選擇所有數字和布林列,同時排除無符號整數:
df.select_dtypes(include=['number', 'bool'], exclude=['unsignedinteger'])
# 例項6:按可呼叫選擇
# .loc,.iloc以及[]索引也可以接受一個callable索引器。
df.loc[lambda df: df.A > 0, :] #獲取第三行資料
df.loc[:, lambda df: ['A', 'B']] #獲取A,B列資料
df.iloc[:, lambda df: [0, 1]] #獲取A,B列資料
df[lambda df: df.columns[0]] #獲取A列資料
df.A.loc[lambda s: s > 0] #獲取序列=10
# 例項7:IX 已棄用
df.loc[df.index[[0, 2]], 'A'] # 獲取第1,2行第A列資料
df.iloc[[0, 2],df.columns.get_loc('A')] # 獲取第1,2行第A列資料
df.iloc[[0, 2],df.columns.get_indexer(['A','B'])] # 獲取第1,2行第A,B列資料
# 例項8:設定資料
df[['B', 'A']] = df[['A', 'B']] #就地修改
df.loc[:,['B', 'A']] = df[['A', 'B']] #不會修改
# 交換列值的正確方法是使用原始值:
df.loc[:,['B', 'A']] = df[['A', 'B']].values