dataFrame 切片操做

 loc——經過行標籤索引行數據
# iloc——經過行號索引行數據
# ix——經過行標籤或者行號索引行數據(基於loc和iloc 和at 和iat 的混合)
# 同理,索引列數據也是如此!
# : 在切片操做至關於數組,先後沒有值時取所有,先後爲數字序號時,不包括末端,先後爲名稱時則包括末端
#  特殊狀況 df[1:] 至關於第一行到最後一行, df[1:-1] 第一行到倒數第二行
# at等價於loc, iat等價於iloc,可是隻能取到一個數據, 單數速度更快
# 直接經過df獲取數據,和ix的區別,默認序號取行, 默認字符串其餘取列, 正常獲取格式 df[行][列],(注意列的格式不能使用 :格式, 另外不能使用 df[行,列] 格式獲取)

data=[[1,2,3],[4,5,6]]
index=['A','B']#行號
columns=['a','b','c']#列號
df=pd.DataFrame(data,index=index,columns=columns)#生成一個數據框

#---------------------------------------獲取單行數據-----------------------------------------------------------
# 只能用索引名,若是未指定索引,則是自帶(0--N)
print df.loc['A']

# 只能用索序號, 取第一行
print df.iloc[0]

# 使用ix測試,取第一行
print df.ix['A']
print df.ix[0]

#---------------------------------------獲取單行數據-----------------------------------------------------------

#---------------------------------------獲取列數據-----------------------------------------------------------
# 所有行,列名爲'a'的數據 , 等價於 df.loc[:][ 'a'] 和 df['a']
# 使用loc
print df.loc[:, 'a']
print df.loc[:][ 'a']
print df['a']
# 使用iloc
print df.iloc[:, 0]
# 使用ix
print df.ix[:, 0]
print df.ix[:, 'a']

#---------------------------------------獲取列數據-----------------------------------------------------------

#---------------------------------------獲取多行數據-----------------------------------------------------------
# 使用名稱時末端包含
print df.loc['A':'B']
# 使用默認索引時,末端不包含,因此須要使用0: 2
print df.iloc[0:2]
print df.ix['A':'B']
print df.ix[0:2]
#---------------------------------------獲取多行數據-----------------------------------------------------------

#---------------------------------------獲取多列數據-----------------------------------------------------------
# 等價於 df.loc[:, ['a','b']]
# 取所有行,'a', 'b'列
print  df.loc[:, 'a':'b']
print  df.iloc[:, 0:2]
print  df.ix[:, 'a':'b']
print  df.ix[:, 0:2]
#---------------------------------------獲取多列數據-----------------------------------------------------------

#---------------------------------------獲取多行多列數據-----------------------------------------------------------
#取第一行 'a','b'列
print df.loc['A','a':'b']
print df.iloc[0, 0:2]
print df.ix['A','a':'b']
print df.ix[0, 0:2]
#---------------------------------------獲取多行多列數據-----------------------------------------------------------

#---------------------------------------直接用df獲取數據-----------------------------------------------------------
# 取所有行
# 取所有行,所有列
print df[:]
# 取第一行,所有列
print df[0:1]
# 取第二行到最後一行
print df[1:]
# 取第1行到倒數第二行, 不包括最後一行
print df[0:-1]
#  取倒數第二行
print df[-2:-1]
# 獲取前2行
print df[0:2]

# 獲取'a','b'列, 在df直接取的狀況下,不能使用'a':'b', 使用['a', 'b']代替,並且不能和行出如今同一個數組中
print df[['a','b']]
# 第一行,'a','b'列, 在df直接取的狀況下,不能使用'a':'b', 使用['a', 'b']代替,並且不能和行出如今同一個數組中,並且必須出如今列後,df[0:1, [['a','b']]]這種寫法非法
# 等價於 df.ix[0:1, 'a':'b']
print df[0:1][['a','b']]
print df.ix[0:1, 'a':'b']
print df.ix[0:1, ['a','b']]
print df.ix[0:1][['a','b']]


#操做列
#獲取列最後一行
print df['a'][-1]
#獲取列最後兩行
print df['a'][-2:]

#---------------------------------------直接用df獲取數據-----------------------------------------------------------

#---------------------------------------直接用at獲取數據-----------------------------------------------------------
print df.at['A', 'a']
#---------------------------------------直接用at獲取數據-----------------------------------------------------------

#---------------------------------------直接用iat獲取數據-----------------------------------------------------------
print df.iat[0, 0]
#---------------------------------------直接用iat獲取數據-----------------------------------------------------------
相關文章
相關標籤/搜索