Python Pandas - 删除 DataFrame 中的行



Pandas DataFrame 是一种二维数据结构,用于以表格格式排列数据,包含行和列。DataFrame 通常用于 Python 中的数据分析和处理任务,可以有效地处理大型数据集。数据预处理中的一个常见任务包括根据给定条件删除包含不相关、缺失或特定值的多个或不需要的行。

在本教程中,我们将学习各种从 pandas DataFrame 中删除/删除多行的技术,例如使用.drop()方法、根据条件删除行以及使用索引切片。

使用 drop() 方法删除行

pandas 的DataFrame.drop()方法用于从 pandas DataFrame 中删除特定行。它可以用于根据标签或位置(基于整数的索引)删除行,并返回一个删除了所选行的新 DataFrame。

示例:根据索引值删除 DataFrame 行

这是一个根据其索引值使用DataFrame.drop()方法从 DataFrame 对象删除行的基本示例。

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [4, 5, 6, 7, 8]})

# Display original DataFrame
print("Original DataFrame:")
print(df)

# Drop the row with index 5
result = df.drop(3)

# Display the result
print("\nAfter dropping the row at index 5:")
print(result)

以下是上述代码的输出:

Original DataFrame:
   A  B
0  1  4
1  2  5
2  3  6
3  4  7
4  5  8

After dropping the row at index 5:
   A  B
0  1  4
1  2  5
2  3  6
4  5  8

注意:如果 DataFrame 的索引中找不到指定的行标签或索引,此方法将引发KeyError。可以通过将 errors 参数从 raise 设置为 ignore 来抑制此错误。

示例:根据标签删除 DataFrame 行

与之前的示例类似,以下示例将使用DataFrame.drop()方法根据其行标签从 DataFrame 中删除多行。

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [4, 5, 6, 7, 8],
'C': [9, 10, 11, 12, 13]}, index=['r1', 'r2', 'r3', 'r4', 'r5'])

# Display original DataFrame
print("Original DataFrame:")
print(df)

# Drop the rows by row-labels
result = df.drop(['r1', 'r3'])

# Display the result
print("\nAfter dropping the rows:")
print(result)

以下是上述代码的输出:

Original DataFrame:
    A  B   C
r1  1  4   9
r2  2  5  10
r3  3  6  11
r4  4  7  12
r5  5  8  13

After dropping the row:
    A  B   C
r2  2  5  10
r4  4  7  12
r5  5  8  13

根据条件删除行

也可以根据条件表达式删除行,这意味着可以使用选择括号[]内的条件来过滤行。此技术通常用于删除满足特定条件的行。

示例

此示例演示了如何根据[]中指定的条件语句从 Pandas DataFrame 中删除一行或多行。在此示例中,行删除基于 DataFrame 的列值。

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [4, 5, 6, 7, 8],
'C': [90, 0, 11, 12, 13]}, index=['r1', 'r2', 'r3', 'r4', 'r5'])

# Display original DataFrame
print("Original DataFrame:")
print(df)

# Dropping rows where column 'C' contains 0
result = df[df["C"] != 0]

# Display the result
print("\nAfter dropping the row where 'C' has 0:")
print(result)

以下是上述代码的输出:

Original DataFrame:
    A  B   C
r1  1  4  90
r2  2  5   0
r3  3  6  11
r4  4  7  12
r5  5  8  13

After dropping the row where 'C' has 0:
    A  B   C
r1  1  4  90
r3  3  6  11
r4  4  7  12
r5  5  8  13

使用索引切片删除行

这是删除或删除行的另一种方法,使用索引切片。此技术根据其索引位置删除一定范围的行。

示例

此示例演示了如何使用索引切片从 DataFrame 中删除单行或多行。

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [4, 5, 6, 7, 8]})

# Display original DataFrame
print("Original DataFrame:")
print(df)

# Drop the row using the index slicing
result = df.drop(df.index[2:4])

# Display the result
print("\nAfter dropping the row at 2 and 3:")
print(result)

以下是上述代码的输出:

Original DataFrame:
   A  B
0  1  4
1  2  5
2  3  6
3  4  7
4  5  8

After dropping the row at 2 and 3:
   A  B
0  1  4
1  2  5
4  5  8
广告