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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251398.html
標籤:Python
上一篇:pandas映射與資料轉換
下一篇:pandas隨機排列與隨機抽樣
