如何在 Pandas 中删除行

2025年1月11日 | 阅读 6 分钟

使用 pandas.DataFrame.drop(),我们可以从给定的 DataFrame 中删除、移除或消除我们想要的行。我们可以使用 DataFrame.axis 参数选择要删除的轴。 默认情况下,Axis = 0 表示消除行。 要消除列,请应用 axis = 1 或 columns_param。 删除行时,Pandas 默认创建 DataFrame 的副本;要从现有引用 DataFrame 中删除,请使用 inplace = True 选项。

语法

参数

  • 标签:以字符串或字符串集合引用的行或列标题。
  • axis:整数或字符串项,行索引为 0,列索引分别为 1。
  • 索引或列:单个标签或列表。 索引或列可以替换标签。 但是,它们不能一起使用。
  • 级别:当数据框具有多级索引时,用于定义级别。
  • 就地:如果为 True,则更新原始数据框。
  • errors:如果列表中任何项目为 false,则忽略错误,当 errors 设置为 "ignore" 时,将删除其余值。

返回类型:更新后的 DataFrame

使用行索引标签删除单行

pandas 的一个优点是提供与列名类似的行标签或标题。如果我们的数据框支持行标签(也称为索引标签),我们可以使用行标签名称指定要删除的单个行。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
B  Peter   26            20
C  Harry   28            38
D  Naill   25            17
New DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
C  Harry   28            38
D  Naill   25            17

使用索引标签删除多行

我们可以在列表中提供多个行索引标签给 drop 命令,以从 DataFrame 中删除多行。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
B  Peter   26            20
C  Harry   28            38
D  Naill   25            17
New DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
D  Naill   25            17

按索引号删除行

同样,我们可以通过将索引位置作为参数提供给 drop() 方法来从给定的 pandas DataFrame 中删除行。我们必须使用索引提取行名,并将它们传递给 drop() 方法,因为它不接受行位置索引作为参数。为了获得要删除的索引的 DataFrame 的行标签,我们将使用 df.index。

使用 df.index.values 函数将所有行标签作为列表返回。

例如,使用 df.index[[1,2]],获取第二行和第三行的行标签; 然后 drop() 方法删除这些行。 请记住,Python 中列表的索引从零开始。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
B  Peter   26            20
C  Harry   28            38
D  Naill   25            17
New DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
D  Naill   25            17

原地删除 DataFrame 的行

到目前为止,我们一直得到一个删除了行的新的 DataFrame。 但是,我们可以在不创建一个名为对 DataFrame 执行“就地”操作的情况下删除 DataFrame 的行。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
B  Peter   26            20
C  Harry   28            38
D  Naill   25            17
Updated DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
D  Naill   25            17

使用索引范围删除行

通过定义索引范围,我们也可以消除行。 下面的实例删除了第三行之前存在的所有行。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
B  Peter   26            20
C  Harry   28            38
D  Naill   25            17
Updated DataFrame: 
     Name  Age  Salary (LPA)
D  Naill   25            17

通过检查条件删除行

通过 loc[] 和 iloc[] 函数,我们可以根据某些条件(列值)轻松删除 DataFrame 行。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32
B  Peter   26            20
C  Harry   28            38
D  Naill   25            17
New DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21            32

删除包含 NaN/None 值的行

处理分析时,我们经常需要清理包含 None、Null 和 np.NaN 值的行。 我们可以通过调用 df.dropna() 从给定的 DataFrame 中删除 NaN 值。

代码

输出

Original DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21          32.0
B  Peter   26           NaN
C  Harry   28          38.0
D  Naill   25           NaN
New DataFrame: 
     Name  Age  Salary (LPA)
A  Itika   21          32.0
C  Harry   28          38.0