pandas 對數據幀DataFrame中數據的索引及切片操作


1、創建數據幀

  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'])

2、獲取數據幀的行索引和列索引

2.1 獲取行索引

# 以數組形式返回
row_name = df.index.values

# 以列表形式返回
row_name = df.index.values.tolist()

2.2 獲取列索引

# 以數組的形式返回
col_name = df.columns.values

# 以列表的形式返回
col_name = df.columns.values.tolist()

3、獲取指定行、列的元素

3.1 獲取指定行的元素

  獲取某行數據需用.loc[]或.iloc[]方法,不能直接索引。

# 以行名索引,返回一個系列(series)
df_row0 = df.loc['row_0']

# 以行的絕對位置索引,返回一個系列(series)
df_row0 = df.iloc[0]

3.2 獲取指定列的元素

  獲取某列數據可以通過列名直接索引。

# 以列名索引,返回一個系列(series)
df_col0 = df['col_0']

  索引某列不能直接通過列的絕對位置來索引,但可以轉換思路,借助列索引值實現用絕對位置的間接索引。

# df_col0 = df[0] 通過絕對位置直接索引報錯
# 通過列索引名 df.columns 實現對列的絕對位置索引
df_col0 = df[df.columns[0]]

4、對數據幀切片

 4.1 行切片

  對行進行切片操作,可以通過.iloc[]方法或直接用行的絕對位置。不能通過行名進行切片操作。

# 通過iloc[]方法切片,[0:2]左閉右開,即切取第0行和第1行
df_row = df.iloc[0:2]

 

# 通過行的絕對位置切片,[0:2]左閉右開,即切取第0行和第1行
df_row = df[0:2]

4.2 列切片

  對列進行切片時,可以將所需要切取的列的列名組成一個一維的列表或數組,直接傳入df[]即可。

# df_col = df[df.columns[0:2]] 切取第0列和第1列,與下句代碼等價
df_col = df[['col_0', 'col_1']]

4.3 局部切片

  先進行行切片,再進行列切片即可。

# 切取第0行和第1行,'col_0'和'col_2'列
df_new = df[0:2][['col_0', 'col_2']]

5、獲取某位置元素

5.1 通過行、列定位

# 通過行列定位,返回值為一個系列(series)
df_new = df.loc['row_0'][['col_0']]

5.2 通過.at[]方法

# 用行名和列名索引,返回該位置的具體元素
df_new = df.at['row_0', 'col_0']

5.3 通過.iat[]方法

# 用行列的絕對位置定位,返回該位置的具體元素
df_new = df.iat[0,0]

 

 小結:對行操作一般通過df.iloc[絕對位置]或df.loc[‘行名’],對列操作直接用df[‘列名’]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM