pandas DataFrame的新增行列,修改、刪除、篩選、判斷元素以及轉置操作


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

  


免責聲明!

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



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