pandas DataFrame where的實(shí)現(xiàn)示例
Pandas2.2 DataFrame
Indexing, iteration
方法 | 描述 |
---|---|
DataFrame.head([n]) | 用于返回 DataFrame 的前幾行 |
DataFrame.at | 快速訪(fǎng)問(wèn)和修改 DataFrame 中單個(gè)值的方法 |
DataFrame.iat | 快速訪(fǎng)問(wèn)和修改 DataFrame 中單個(gè)值的方法 |
DataFrame.loc | 用于基于標(biāo)簽(行標(biāo)簽和列標(biāo)簽)來(lái)訪(fǎng)問(wèn)和修改 DataFrame 中的數(shù)據(jù) |
DataFrame.iloc | 用于基于整數(shù)位置(行號(hào)和列號(hào))來(lái)訪(fǎng)問(wèn)和修改 DataFrame 中的數(shù)據(jù) |
DataFrame.insert(loc, column, value[, …]) | 用于在 DataFrame 的指定位置插入一個(gè)新的列 |
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 中提取一個(gè)橫截面(cross-section) |
DataFrame.get(key[, default]) | 用于從 DataFrame 中獲取指定列的數(shù)據(jù) |
DataFrame.isin(values) | 用于檢查 DataFrame 中的每個(gè)元素是否包含在指定的值集合中 |
DataFrame.where(cond[, other, inplace, …]) | 用于根據(jù)條件篩選 DataFrame 中的元素 |
pandas.DataFrame.where()
pandas.DataFrame.where(cond, other=nan, *, inplace=False, axis=None, level=None)
方法用于根據(jù)條件篩選 DataFrame 中的元素。如果條件為 True
,則保留元素;如果條件為 False
,則用 other
參數(shù)指定的值替換該元素。
參數(shù)
cond
:布爾條件,可以是布爾值、布爾數(shù)組、布爾 DataFrame 或布爾 Series。other
:可選參數(shù),當(dāng)條件為False
時(shí)使用的值。默認(rèn)為NaN
。inplace
:布爾值,如果為True
,則直接在原 DataFrame 上進(jìn)行修改,否則返回一個(gè)新的 DataFrame。默認(rèn)為False
。axis
:指定軸,0
或'index'
表示按行,1
或'columns'
表示按列。默認(rèn)為None
。level
:如果索引是多級(jí)索引,指定要使用的級(jí)別。默認(rèn)為None
。
返回值
- 如果
inplace=False
,返回一個(gè)新的 DataFrame。 - 如果
inplace=True
,返回None
。
示例
假設(shè)我們有一個(gè) 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.where(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 NaN
3 NaN NaN
示例 2:使用布爾條件和自定義替換值
將 A
列中大于 2 的值替換為 0
:
result = df.where(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 0
3 0 0
示例 3:使用布爾 DataFrame 替換值
將 A
列中大于 2 的值替換為 NaN
,B
列中大于 6 的值替換為 NaN
:
cond = (df['A'] <= 2) & (df['B'] <= 6) result = df.where(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.where(df['A'] <= 2, other=0, inplace=True) print("\n直接修改原 DataFrame:") print(df)
輸出:
直接修改原 DataFrame:
A B
0 1 5
1 2 6
2 0 0
3 0 0
示例 5:使用多級(jí)索引
假設(shè)我們有一個(gè)多級(jí)索引的 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
使用 where
方法并指定 level
參數(shù):
result = df.where(df['A'] <= 2, level='first') print("\n使用 where 方法并指定 level 參數(shù):") print(result)
輸出:
使用 where 方法并指定 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.where
方法提供了一種靈活的方式來(lái)根據(jù)條件篩選和替換 DataFrame 中的元素。你可以使用布爾條件、布爾數(shù)組或布爾 DataFrame 來(lái)指定哪些元素需要保留,哪些需要替換。通過(guò) other
參數(shù)可以指定替換的值,默認(rèn)為 NaN
。inplace
參數(shù)允許你選擇是否直接修改原 DataFrame。這對(duì)于數(shù)據(jù)清洗和預(yù)處理非常有用。
到此這篇關(guān)于pandas DataFrame where的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)pandas DataFrame where內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python檢查 云備份進(jìn)程是否正常運(yùn)行代碼實(shí)例
這篇文章主要介紹了Python檢查 云備份進(jìn)程是否正常運(yùn)行代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08PyCharm無(wú)法識(shí)別PyQt5的2種解決方法,ModuleNotFoundError: No module named
這篇文章主要介紹了PyCharm無(wú)法識(shí)別PyQt5的兩種解決辦法,ModuleNotFoundError: No module named 'pyqt5',需要的朋友可以參考下2020-02-02使用Python代碼進(jìn)行PowerPoint演示文稿的合并與拆分
多個(gè)PowerPoint演示文稿的處理可能會(huì)成為非常麻煩的工作,有時(shí)需要將多個(gè)演示文稿合并為一個(gè)演示文稿,從而不用在演示時(shí)重復(fù)打開(kāi)演示文稿,本文我們可以使用Python代碼來(lái)快速、準(zhǔn)確的執(zhí)行PowerPoint演示文稿的合并于拆分操作,需要的朋友可以參考下2024-03-03python如何實(shí)現(xiàn)lazy segment tree惰性段樹(shù)算法
LazySegmentTree(惰性段樹(shù))算法是一種數(shù)據(jù)結(jié)構(gòu),專(zhuān)門(mén)用于高效處理區(qū)間查詢(xún)和更新操作,它利用延遲更新技術(shù)(LazyPropagation),僅在必要時(shí)執(zhí)行實(shí)際更新,以提升效率,此結(jié)構(gòu)將數(shù)組表達(dá)為二叉樹(shù),每個(gè)節(jié)點(diǎn)表示一個(gè)數(shù)組區(qū)間2024-10-10Django 拼接兩個(gè)queryset 或是兩個(gè)不可以相加的對(duì)象實(shí)例
這篇文章主要介紹了Django 拼接兩個(gè)queryset 或是兩個(gè)不可以相加的對(duì)象實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
這篇文章主要介紹了Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法
最近在使用pip安裝python的時(shí)候遇到些問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法,需要的朋友可以參考下2023-01-01Python編程基礎(chǔ)之構(gòu)造方法和析構(gòu)方法詳解
這篇文章主要為大家詳細(xì)介紹了Python的構(gòu)造方法和析構(gòu)方法,使用Python編程基礎(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01