1)指定行索引和列索引標簽
index 屬性可以指定 DataFrame 結構中的索引數組, columns 屬性可以指定包含列名稱的行,
而使用 name 屬性,通過對一個 DataFrame 實例進行 df 設置( df.index.name 和 df.columns.name)就可以為 DataFrame 結構指定行索引標簽和列索引標簽。
例如,對產品價格表指定行索引標簽和列索引標簽,其示例代碼如下:
In [24]: df.index.name = 'id' In [25]: df.columns.name = 'item In [26]: df Out[26]: item product price id 0 電視機 2300.0 1 空調 1980.0 2 洗衣機 780.0 3 電腦 NaN
2) 添加一列元素
為 DataFrame 實例添加一列元素的方法就是指定 DataFrame 實例新列的名稱,並為其賦值即可。例如,為產品價格增加一個折扣率列,其示例代碼如下:
In [27]: df['discount']=[0.9,0.85,0.95,1] In [28]: df Out[28]: item product price discount id 0 電視機 2300.0 0.90 1 空調 1980.0 0.85 2 洗衣機 780.0 0.95 3 電腦 NaN 1.00
或者用 insert() 函數在指定位置添加一列元素。例如,在折扣率列后面,添加一列價格(“price”)乘以折扣率(“discount”)的實際價格(“Actual_price”)列,其示例代碼如下:
In [29]: df.insert(3,'Actual_price',df['price']*df['discount']) In [30]: df Out[30]: item product price discount Actual_price id 0 電視機 2300.0 0.90 2070.0 1 空調 1980.0 0.85 1683.0 2 洗衣機 780.0 0.95 741.0 3 電腦 NaN 1.00 NaN
3) 添加一行元素
為 DataFrame 實例添加一行元素的方法就是使用 loc 屬性為 DataFrame 實例新添加一行,並為此行賦值即可。例如,為產品價格增加一個手機產品的價格行,其示例代碼如下:
In [31]: df.loc['add_row'] = ['手機',1900,1,1900] In [32]: df Out[32]: item product price discount Actual_price id 0 電視機 2300.0 0.90 2070.0 1 空調 1980.0 0.85 1683.0 2 洗衣機 780.0 0.95 741.0 3 電腦 NaN 1.00 NaN add_row 手機 1900.0 1.00 1900.0
4) 修改一行元素
修改 DataFrame 對象中的一行元素,只需要使用 loc 屬性指定 DataFrame 實例中行索引,並為此行賦值即可。例如,修改產品價格中電腦一行的數據,其示例代碼如下:
In [33]: df.loc[3] = ['電腦',4500,1,4500] In [34]: df Out[34]: item product price iscount Actual_price id 0 電視機 2300.0 0.90 2070.0 1 空調 1980.0 0.85 1683.0 2 洗衣機 780.0 0.95 741.0 3 電腦 4500.0 1.00 4500.0 add_row 手機 1900.0 1.00 1900.0
5) 修改一列元素或一個元素
修改 DataFrame 實例中的一列元素,只要指定 DataFrame 實例中列名稱,將要更新的一列元素存放到數組中,然后將此數組賦值給這一列即可。
例如,修改產品價格中的價格為新價格 [3000,2300,560,5600],其示例代碼如下:
In [35]: df['price']=[3000,2300,560,5600,1880] In [36]: df Out[36]: item product price discount Actual_price id 0 電視機 3000 0.90 2070.0 1 空調 2300 0.85 1683.0 2 洗衣機 560 0.95 741.0 3 電腦 5600 1.00 4500.0 add_row 手機 1880 1.00 1900.0
修改一個元素,只需要選擇該元素,直接給其賦值即可。例如 df['discount'][1]=0.96。
6) 刪除元素
6.1) 使用 del 命令刪除一列元素
如果要刪除一整列的所有數據,使用 del 命令。例如,刪除產品價格中的實際價格列,其示例代碼如下:
In [37]: del df['Actual_price'] In [38]: df Out[38]: item product price discou id 0 電視機 3000 0.90 1 空調 2300 0.85 2 洗衣機 560 0.95 3 電腦 5600 1.00 add_row 手機 1880 1.00
6.2) 使用 pop() 函數刪除一列元素
pop() 函數可以將所選列從原數據塊中刪除,原數據塊不再保留該列。例如,使用 pop() 函數刪除折扣率列,其示例代碼如下:
In [39]: df.pop('discount') Out[39]: id 0 0.90 1 0.85 2 0.95 3 1.00 add_row 1.00 Name: discount, dtype: float64
6.3) 使用 drop() 函數刪除一列元素或刪除一行元素
在 drop() 函數中有兩個參數,一個參數是 axis,當參數 axis=1 時,則刪除列元素;當 axis=0 時,則刪除行元素。還有一個參數是 inplace,當 inplace 為 True 時,drop() 函數執行內部刪除,不返回任何值,原數據發生改變;當 inplace 為 False 時,原數據不會發生改變,只是輸出新變量刪除。
例如,先添加 1 列折扣率列,然后再用 drop() 函數設置參數 axis=1 和 inplace=True 刪除折扣率的列元素,其示例代碼如下:
In [40]: df['discount']=0.94 In [41]: df.drop(['discount'],axis=1,inplace=True)
如果要刪除一行,則設置 axis=0,並指定刪除的行索引或行標簽。例如,刪除行標簽為 add_row 的一行元素,其示例代碼如下:
In [42]: df.drop(['add_row'],axis=0,inplace=True)
如果要刪除多行,除了設置 axis=0 外,還要指定刪除的行索引或行標簽,例如,刪除第 1 行和第 3 行元素,其示例代碼如下:
In [43]: df.drop([0,2],axis=0,inplace=True)
7) 篩選元素
對於 DataFrame 對象,也可以通過指定條件來篩選元素。例如,篩選出產品價格中價格大於 2000 元的產品信息,其示例代碼如下:
In [44]: df[df['price']>2000] Out[44]: item product price id 0 電視機 3000 1 空調 2300 3 電腦 5600
例如,篩選出產品價格中所有元素都小於 2000 元的產品信息,其示例代碼如下:
In [45]: df[df<2000] Out[45]: item product price id 0 電視機 NaN 1 空調 NaN 2 洗衣機 560 3 電腦 NaN
返回的 DataFrame 對象中只包含滿足條件的數字,各元素的位置保持不變,其他不符合條件的元素替換成 NaN。
8)判斷元素是否存在
使用 isin() 函數可以判斷給定的一列元素是否包含在 DataFrame 結構中,如果給定的元素包含在數據結構中,isin() 函數返回是 True,否則返回是 False。利用此函數可以篩選 DataFrame 列中的數據。
例如判斷產品價格中是否存在“電腦”和 2300 這兩個元素,並返回滿足條件的元素,其示例代碼如下:
In [46]: df[df.isin(['電腦',2300])] Out[46]: item product price id 0 NaN NaN 1 NaN 2300.0 2 NaN NaN 3 電腦 NaN
9) DataFrame 轉置
DataFrame 數據結構類似於表格數據結構,在處理表格數據時,常常會用到轉置操作,即將列變成行,行變成列。pandas 提供了一種簡單的轉置方法,就是通過調用T屬性獲得 DataFrame 對象的轉置形式。
例如將產品價格數據結構進行轉置操作,其示例代碼如下:
In [47]: df.T Out[47]: id 0 1 2 3 item product 電視機 空調 洗衣機 電腦 price 3000 2300 560 5600