欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Pandas進(jìn)行條件替換與向前填充的代碼實(shí)現(xiàn)

 更新時(shí)間:2025年07月31日 10:00:36   作者:袁袁袁袁滿  
這篇文章主要介紹了如何用Pandas的mask()、ffill()和astype()實(shí)現(xiàn):當(dāng)項(xiàng),列非零時(shí),用上一行的值填充,適用于數(shù)據(jù)清洗和時(shí)間序列處理等場(chǎng)景,展示了條件替換與填充的組合應(yīng)用及變體方法,需要的朋友可以參考下

一、需求

示例數(shù)據(jù):

   項(xiàng)  目
0  1  0
1  0  1
2  0  2
3  0  3
4  0  4

使用 Pandas 實(shí)現(xiàn)當(dāng) 目 列的值不為 0 時(shí),將當(dāng)前行的 項(xiàng) 列值修改為上一行的 項(xiàng) 列值:

   項(xiàng)  目
0  1  0
1  1  1
2  1  2
3  1  3
4  1  4

二、實(shí)現(xiàn)代碼

案例代碼

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)
df = pd.DataFrame({
    '項(xiàng)': [1, 0, 0, 0, 0],
    '目': [0, 1, 2, 3, 4]
})
print(df)

# 當(dāng)`目`列不為0時(shí),`項(xiàng)`列的值被替換為NaN,然后向前填充
df['項(xiàng)'] = df['項(xiàng)'].mask(df['目'] != 0).ffill().astype(int)

print(df)

詳細(xì)解釋

1. 導(dǎo)入庫(kù)和創(chuàng)建數(shù)據(jù)

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)
df = pd.DataFrame({
    '項(xiàng)': [1, 0, 0, 0, 0],
    '目': [0, 1, 2, 3, 4]
})
  • 首先導(dǎo)入Pandas庫(kù)并簡(jiǎn)稱為pd
  • 創(chuàng)建一個(gè)DataFrame df,包含兩列:
    • "項(xiàng)"列:初始值為[1, 0, 0, 0, 0]
    • "目"列:初始值為[0, 1, 2, 3, 4]

初始數(shù)據(jù)如下:

   項(xiàng)  目
0  1  0
1  0  1
2  0  2
3  0  3
4  0  4

2. 條件替換與填充

df['項(xiàng)'] = df['項(xiàng)'].mask(df['目'] != 0).ffill().astype(int)

這行代碼執(zhí)行了多個(gè)操作,我們將其分解:

a. 條件掩碼 - mask()

df['項(xiàng)'].mask(df['目'] != 0)

  • df['目'] != 0 創(chuàng)建一個(gè)布爾Series:[False, True, True, True, True]
  • mask()函數(shù)會(huì)用NaN替換滿足條件(True)的位置
  • 結(jié)果:"項(xiàng)"列變?yōu)?[1, NaN, NaN, NaN, NaN]

b. 向前填充 - ffill()

.ffill()

  • 向前填充(Forward Fill)方法會(huì)用前一個(gè)有效值填充NaN
  • 對(duì)于我們的數(shù)據(jù):
    • 第一個(gè)值是1(保持不變)
    • 后續(xù)NaN被前一個(gè)有效值1填充
  • 結(jié)果:"項(xiàng)"列變?yōu)?[1, 1, 1, 1, 1]

c. 類型轉(zhuǎn)換 - astype(int)

.astype(int)

  • 將填充后的浮點(diǎn)數(shù)(因?yàn)镹aN是浮點(diǎn)類型)轉(zhuǎn)換為整數(shù)
  • 最終"項(xiàng)"列變?yōu)?[1, 1, 1, 1, 1]

3. 打印結(jié)果

print(df)

輸出結(jié)果:

   項(xiàng)  目
0  1  0
1  1  1
2  1  2
3  1  3
4  1  4

三、實(shí)際應(yīng)用場(chǎng)景

這種操作在實(shí)際數(shù)據(jù)處理中很有用,例如:

  1. 數(shù)據(jù)清洗:當(dāng)某列(如"目")有特定值時(shí),需要重置另一列(如"項(xiàng)")的值
  2. 時(shí)間序列處理:在某個(gè)事件發(fā)生后(如"目"列不為0表示事件發(fā)生),需要保持某個(gè)狀態(tài)(如"項(xiàng)"列的值)
  3. 標(biāo)記傳播:將某個(gè)標(biāo)記從特定點(diǎn)向前傳播

四、可能的變體

  1. 向后填充:使用.bfill()而不是.ffill()
  2. 不同條件:可以修改mask的條件邏輯
  3. 填充特定值:可以使用.fillna()填充特定值而非前向填充

五、總結(jié)

這段代碼展示了Pandas中幾個(gè)強(qiáng)大功能的組合使用:

  • mask():基于條件替換值
  • ffill():向前填充缺失值
  • astype():數(shù)據(jù)類型轉(zhuǎn)換

通過(guò)這種組合,可以高效地實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)轉(zhuǎn)換邏輯,這在數(shù)據(jù)預(yù)處理和分析中非常常見(jiàn)。理解這些基本操作的組合方式,可以幫助我們更靈活地處理各種數(shù)據(jù)清洗和轉(zhuǎn)換任務(wù)。

以上就是利用Pandas進(jìn)行條件替換與向前填充的代碼實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Pandas條件替換與向前填充的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python學(xué)習(xí)之名字,作用域,名字空間(下)

    Python學(xué)習(xí)之名字,作用域,名字空間(下)

    這篇文章主要介紹了Python學(xué)習(xí)之名字,作用域,名字空間,緊接上一篇文章內(nèi)容展開(kāi)全文,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-05-05
  • Python通過(guò)正則表達(dá)式選取callback的方法

    Python通過(guò)正則表達(dá)式選取callback的方法

    這篇文章主要介紹了Python通過(guò)正則表達(dá)式選取callback的方法,涉及Python正則表達(dá)式及回調(diào)函數(shù)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python爬蟲(chóng)中的并發(fā)編程詳解

    Python爬蟲(chóng)中的并發(fā)編程詳解

    Python爬蟲(chóng)中的并發(fā)編程是一種優(yōu)化爬取速度、解決阻塞問(wèn)題、優(yōu)化資源利用的方式。常用的并發(fā)編程模塊包括多線程、多進(jìn)程、協(xié)程等,通過(guò)并發(fā)處理多個(gè)任務(wù),可以提高爬取效率,節(jié)省爬蟲(chóng)資源利用成本。同時(shí),還需注意線程安全、共享資源問(wèn)題等并發(fā)編程中的常見(jiàn)陷阱
    2023-05-05
  • python中的腳本性能分析

    python中的腳本性能分析

    這篇文章主要介紹了python中的腳本性能分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python中函數(shù)的創(chuàng)建與調(diào)用你了解嗎

    Python中函數(shù)的創(chuàng)建與調(diào)用你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python中函數(shù)的創(chuàng)建與調(diào)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • python實(shí)現(xiàn)對(duì)數(shù)據(jù)公鑰加密與私鑰解密

    python實(shí)現(xiàn)對(duì)數(shù)據(jù)公鑰加密與私鑰解密

    這篇文章主要為大家詳細(xì)介紹了如何使用python實(shí)現(xiàn)對(duì)數(shù)據(jù)公鑰加密與私鑰解密,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • python多線程超詳細(xì)詳解

    python多線程超詳細(xì)詳解

    這篇文章主要介紹了python多線程超詳細(xì)詳解,多線程這個(gè)知識(shí)點(diǎn)非常重要,想了解的同學(xué)可以參考下
    2021-04-04
  • 利用python打印出菱形、三角形以及矩形的方法實(shí)例

    利用python打印出菱形、三角形以及矩形的方法實(shí)例

    最近在開(kāi)發(fā)中遇到一個(gè)問(wèn)題,需要利用python實(shí)現(xiàn)菱形、三角形以及矩形等形狀,發(fā)現(xiàn)網(wǎng)上這方面的資料較少,所以總結(jié)分享下,這篇文章主要給大家介紹了關(guān)于利用python打印出菱形、三角形以及矩形的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • Python 多線程Threading初學(xué)教程

    Python 多線程Threading初學(xué)教程

    多線程可簡(jiǎn)單理解為同時(shí)執(zhí)行多個(gè)任務(wù)。本文給大家分享Python 多線程Threading初學(xué)教程實(shí)例詳解,感興趣的朋友一起學(xué)習(xí)吧
    2017-08-08
  • Python實(shí)現(xiàn)五子棋人機(jī)對(duì)戰(zhàn)?和人人對(duì)戰(zhàn)

    Python實(shí)現(xiàn)五子棋人機(jī)對(duì)戰(zhàn)?和人人對(duì)戰(zhàn)

    這篇文章主要介紹了Python實(shí)現(xiàn)五子棋人機(jī)對(duì)戰(zhàn)?和人人對(duì)戰(zhàn),通過(guò)定義黑白子,落子位置以及獲勝規(guī)則展開(kāi)詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05

最新評(píng)論