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

  

(0)

相关推荐