切換語言為:簡體

如何在 Pandas DataFrame 中刪除負值

  • 爱糖宝
  • 2024-07-17
  • 2104
  • 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.