pandas DataFrame mask的具體使用
Pandas2.2 DataFrame
Indexing, iteration
| 方法 | 描述 |
|---|---|
| DataFrame.head([n]) | 用于返回 DataFrame 的前幾行 |
| DataFrame.at | 快速訪問和修改 DataFrame 中單個值的方法 |
| DataFrame.iat | 快速訪問和修改 DataFrame 中單個值的方法 |
| DataFrame.loc | 用于基于標簽(行標簽和列標簽)來訪問和修改 DataFrame 中的數(shù)據(jù) |
| DataFrame.iloc | 用于基于整數(shù)位置(行號和列號)來訪問和修改 DataFrame 中的數(shù)據(jù) |
| DataFrame.insert(loc, column, value[, …]) | 用于在 DataFrame 的指定位置插入一個新的列 |
| DataFrame.iter() | 用于迭代 DataFrame 的列名 |
| DataFrame.items() | 用于迭代 DataFrame 的列名和列數(shù)據(jù) |
| DataFrame.keys() | 返回 DataFrame 的列名 |
| DataFrame.iterrows() | 用于逐行迭代 DataFrame |
| DataFrame.itertuples([index, name]) | 用于逐行迭代 DataFrame |
| DataFrame.pop(item) | 用于從 DataFrame 中刪除指定列 |
| DataFrame.tail([n]) | 用于返回 DataFrame 的最后 n 行 |
| DataFrame.xs(key[, axis, level, drop_level]) | 用于從 DataFrame 中提取一個橫截面(cross-section) |
| DataFrame.get(key[, default]) | 用于從 DataFrame 中獲取指定列的數(shù)據(jù) |
| DataFrame.isin(values) | 用于檢查 DataFrame 中的每個元素是否包含在指定的值集合中 |
| DataFrame.where(cond[, other, inplace, …]) | 用于根據(jù)條件篩選 DataFrame 中的元素 |
| DataFrame.mask(cond[, other, inplace, axis, …]) | 用于根據(jù)條件篩選 DataFrame 中的元素 |
pandas.DataFrame.mask()
pandas.DataFrame.mask(cond, other=<no_default>, *, inplace=False, axis=None, level=None) 方法用于根據(jù)條件篩選 DataFrame 中的元素。如果條件為 True,則用 other 參數(shù)指定的值替換該元素;如果條件為 False,則保留原值。
參數(shù)
cond:布爾條件,可以是布爾值、布爾數(shù)組、布爾 DataFrame 或布爾 Series。other:可選參數(shù),當(dāng)條件為True時使用的值。默認為NaN。inplace:布爾值,如果為True,則直接在原 DataFrame 上進行修改,否則返回一個新的 DataFrame。默認為False。axis:指定軸,0或'index'表示按行,1或'columns'表示按列。默認為None。level:如果索引是多級索引,指定要使用的級別。默認為None。
返回值
- 如果
inplace=False,返回一個新的 DataFrame。 - 如果
inplace=True,返回None。
示例
假設(shè)我們有一個 DataFrame 如下:
import pandas as pd
import numpy as np
data = {
'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8]
}
df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
輸出:
原始 DataFrame:
A B
0 1 5
1 2 6
2 3 7
3 4 8
示例 1:使用布爾條件替換值
將 A 列中大于 2 的值替換為 NaN:
result = df.mask(df['A'] > 2)
print("\n將 A 列中大于 2 的值替換為 NaN:")
print(result)
輸出:
將 A 列中大于 2 的值替換為 NaN:
A B
0 1.0 5.0
1 2.0 6.0
2 NaN 7.0
3 NaN 8.0
示例 2:使用布爾條件和自定義替換值
將 A 列中大于 2 的值替換為 0:
result = df.mask(df['A'] > 2, other=0)
print("\n將 A 列中大于 2 的值替換為 0:")
print(result)
輸出:
將 A 列中大于 2 的值替換為 0:
A B
0 1 5
1 2 6
2 0 7
3 0 8
示例 3:使用布爾 DataFrame 替換值
將 A 列中大于 2 的值替換為 NaN,B 列中大于 6 的值替換為 NaN:
cond = (df['A'] > 2) | (df['B'] > 6)
result = df.mask(cond)
print("\n將 A 列中大于 2 的值和 B 列中大于 6 的值替換為 NaN:")
print(result)
輸出:
將 A 列中大于 2 的值和 B 列中大于 6 的值替換為 NaN:
A B
0 1.0 5.0
1 2.0 6.0
2 NaN NaN
3 NaN NaN
示例 4:使用 inplace=True 直接修改原 DataFrame
將 A 列中大于 2 的值替換為 0,直接修改原 DataFrame:
df.mask(df['A'] > 2, other=0, inplace=True)
print("\n直接修改原 DataFrame:")
print(df)
輸出:
直接修改原 DataFrame:
A B
0 1 5
1 2 6
2 0 7
3 0 8
示例 5:使用多級索引
假設(shè)我們有一個多級索引的 DataFrame:
index = pd.MultiIndex.from_tuples([('a', 'x'), ('a', 'y'), ('b', 'x'), ('b', 'y')], names=['first', 'second'])
df = pd.DataFrame(data, index=index)
print("原始 DataFrame:")
print(df)
輸出:
原始 DataFrame:
A B
first second
a x 1 5
y 2 6
b x 0 0
y 0 0
使用 mask 方法并指定 level 參數(shù):
result = df.mask(df['A'] > 2, level='first')
print("\n使用 mask 方法并指定 level 參數(shù):")
print(result)
輸出:
使用 mask 方法并指定 level 參數(shù):
A B
first second
a x 1.0 5.0
y 2.0 6.0
b x NaN NaN
y NaN NaN
總結(jié)
pandas.DataFrame.mask 方法提供了一種靈活的方式來根據(jù)條件篩選和替換 DataFrame 中的元素。你可以使用布爾條件、布爾數(shù)組或布爾 DataFrame 來指定哪些元素需要替換,哪些需要保留。通過 other 參數(shù)可以指定替換的值,默認為 NaN。inplace 參數(shù)允許你選擇是否直接修改原 DataFrame。這對于數(shù)據(jù)清洗和預(yù)處理非常有用。
到此這篇關(guān)于pandas DataFrame mask的具體使用的文章就介紹到這了,更多相關(guān)pandas DataFrame mask內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- pandas按行按列遍歷Dataframe的幾種方式
- Pandas DataFrame數(shù)據(jù)的更改、插入新增的列和行的方法
- pandas DataFrame的修改方法(值、列、索引)
- pandas DataFrame 刪除重復(fù)的行的實現(xiàn)方法
- pandas DataFrame 行列索引及值的獲取的方法
- 用pandas中的DataFrame時選取行或列的方法
- Pandas將列表(List)轉(zhuǎn)換為數(shù)據(jù)框(Dataframe)
- 利用Pandas 創(chuàng)建空的DataFrame方法
- Python中pandas dataframe刪除一行或一列:drop函數(shù)詳解
- pandas.DataFrame刪除/選取含有特定數(shù)值的行或列實例
相關(guān)文章
Python參數(shù)傳遞的陷阱之從基礎(chǔ)類型到類的深入探討
本文詳細探討了Python參數(shù)傳遞機制,包括整數(shù)、列表、元組、字符串和字典等不同數(shù)據(jù)類型的傳遞行為,以及類定義中的參數(shù)傳遞陷阱,通過實際案例和最佳實踐,幫助開發(fā)者避免參數(shù)傳遞相關(guān)的常見問題,編寫出更加健壯和可靠的代碼,感興趣的朋友跟隨小編一起看看吧2026-03-03
Python 基于http.server模塊實現(xiàn)簡單http服務(wù)的代碼舉例
Python http.server模塊通過繼承BaseHTTPRequestHandler處理HTTP請求,使用ThreadingHTTPServer支持多線程,將其他類實例設(shè)為RequestHandler屬性實現(xiàn)跨服務(wù)調(diào)用,本文給大家介紹Python 基于http.server模塊實現(xiàn)簡單http服務(wù)的代碼舉例,感興趣的朋友跟隨小編一起看看吧2025-08-08
Python實現(xiàn)將Excel轉(zhuǎn)換成xml的方法示例
這篇文章主要介紹了Python實現(xiàn)將Excel轉(zhuǎn)換成xml的方法,涉及Python針對Excel文件的讀取、遍歷、節(jié)點設(shè)置與xml生成等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
Django中QuerySet查詢優(yōu)化之prefetch_related詳解
prefetch_related()和select_related()的設(shè)計目的很相似,都是為了減少SQL查詢的數(shù)量,但是實現(xiàn)的方式不一樣,下面這篇文章主要給大家介紹了關(guān)于Django中QuerySet查詢優(yōu)化之prefetch_related的相關(guān)資料,需要的朋友可以參考下2022-11-11
Python+OpenCV實現(xiàn)圖像識別替換功能詳解
OpenCV-Python是一個Python庫,旨在解決計算機視覺問題。本文將利用Python+OpenCV實現(xiàn)圖像識別替換功能,感興趣的小伙伴可以動手嘗試一下2022-07-07

