切换语言为:繁体

如何在 Pandas DataFrame 中删除负值

  • 爱糖宝
  • 2024-07-17
  • 2101
  • 0
  • 0

有效清理数据在数据分析和操作中至关重要。一项常见的任务是通过删除负值来清理数据,尤其是当它们被视为异常值或无效条目时。Python 中的 Pandas 库 提供了几种有效的方法来实现这一点。本文将提供三个例子,说明如何在 Pandas DataFrame 中删除负值。

删除 Pandas DataFrame 中的负值

在从 DataFrame 中删除负值之前,我们首先需要找到它们,Pandas 通过其灵活的索引和选择功能使检索很好实现,找到负值后,可以从 DataFrame 中删除负值。这可以通过应用布尔掩码来筛选掉包含负值的行或列来完成。有多种方法可以实现此目的,具体取决于是要删除整行还是特定列。

以下是在 Pandas DataFrame 中删除负值的几个不同示例。

从单列中删除负值

此方法使用布尔索引来筛选出 Pandas DataFrame 中任何值为负数的行,确保生成的 DataFrame (df_filtered) 在“A”和“B”列中仅包含非负值。

import pandas as pd
# Sample DataFrame
data = {'A': [1, 2, -3, 4, -5],
        'B': [5, -6, 7, 8, 9]}
df = pd.DataFrame(data)
# Method 1: Using boolean indexing
df_filtered = df[df >= 0].dropna()
print("DataFrame after dropping negative values:")
print(df_filtered)

输出:

DataFrame after dropping negative values:     
      A      B
0   1.0    5.0
3   4.0   8.0

删除所有列中具有负值的行

通过将 lambda 函数与 applymap() 一起应用,此方法将 DataFrame 所有元素中的负值替换为 None,然后使用 dropna() 删除包含任何 None 值的行,从而生成没有负值的df_filtered。

import pandas as pd
# Sample DataFrame
data = {'A': [1, 2, -3, 4, -5],
        'B': [5, -6, 7, 8, 9]}
df = pd.DataFrame(data)
# Method 2: Using applymap and dropna
df_filtered = df.applymap(lambda x: x if x >= 0 else None).dropna()
print("DataFrame after dropping negative values:")
print(df_filtered)

删除所有列中具有负值的行

使用 .ge() 和 .all(),此方法选择列“A”和“B”中所有值均为非负值 (>= 0) 的行,从而有效地过滤掉具有任何负值的行,并生成仅具有非负行完好无损的行df_filtered。

import pandas as pd
# Sample DataFrame
data = {'A': [1, 2, -3, 4, -5],
        'B': [5, -6, 7, 8, 9]}
df = pd.DataFrame(data)
# Method 3: Using all and dropna
df_filtered = df[df.ge(0).all(1)]
print("DataFrame after dropping rows with negative values:")
print(df_filtered)

输出:

DataFrame after dropping negative values:
     A   B
0   1    5
3   4   8

结论

从 Pandas DataFrame 中删除负值对于数据完整性和分析至关重要。通过使用这些方法,您可以有效地清理数据并专注于核心业务。

0条评论

您的电子邮件等信息不会被公开,以下所有项均必填

OK! You can skip this field.