index是行索引,即每一行的名字;columns是列索引,即每一列的名字。創建數據幀時行索引和列索引都須要以列表的形式傳入。數組
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], index=['row_0', 'row_1'], columns=['col_0', 'col_1', 'col_2'])
# 以數組形式返回 row_name = df.index.values
# 以列表形式返回 row_name = df.index.values.tolist()
# 以數組的形式返回 col_name = df.columns.values
# 以列表的形式返回 col_name = df.columns.values.tolist()
獲取某行數據需用.loc[]或.iloc[]方法,不能直接索引。spa
# 以行名索引,返回一個系列(series) df_row0 = df.loc['row_0']
# 以行的絕對位置索引,返回一個系列(series) df_row0 = df.iloc[0]
獲取某列數據能夠經過列名直接索引。code
# 以列名索引,返回一個系列(series) df_col0 = df['col_0']
索引某列不能直接經過列的絕對位置來索引,但能夠轉換思路,藉助列索引值實現用絕對位置的間接索引。blog
# df_col0 = df[0] 經過絕對位置直接索引報錯 # 經過列索引名 df.columns 實現對列的絕對位置索引 df_col0 = df[df.columns[0]]
對行進行切片操做,能夠經過.iloc[]方法或直接用行的絕對位置。不能經過行名進行切片操做。索引
# 經過iloc[]方法切片,[0:2]左閉右開,即切取第0行和第1行 df_row = df.iloc[0:2]
# 經過行的絕對位置切片,[0:2]左閉右開,即切取第0行和第1行 df_row = df[0:2]
對列進行切片時,能夠將所須要切取的列的列名組成一個一維的列表或數組,直接傳入df[]便可。pandas
# df_col = df[df.columns[0:2]] 切取第0列和第1列,與下句代碼等價 df_col = df[['col_0', 'col_1']]
先進行行切片,再進行列切片便可。class
# 切取第0行和第1行,'col_0'和'col_2'列 df_new = df[0:2][['col_0', 'col_2']]
# 經過行列定位,返回值爲一個系列(series) df_new = df.loc['row_0'][['col_0']]
# 用行名和列名索引,返回該位置的具體元素 df_new = df.at['row_0', 'col_0']
# 用行列的絕對位置定位,返回該位置的具體元素 df_new = df.iat[0,0]
小結:對行操做通常經過df.iloc[絕對位置]或df.loc[‘行名’],對列操做直接用df[‘列名’]import