最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、需求

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

   項  目
0  1  0
1  0  1
2  0  2
3  0  3
4  0  4

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

   項  目
0  1  0
1  1  1
2  1  2
3  1  3
4  1  4

二、實現(xiàn)代碼

案例代碼

import pandas as pd

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

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

print(df)

詳細(xì)解釋

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

import pandas as pd

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

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

   項  目
0  1  0
1  0  1
2  0  2
3  0  3
4  0  4

2. 條件替換與填充

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

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

a. 條件掩碼 - mask()

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

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

b. 向前填充 - ffill()

.ffill()

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

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

.astype(int)

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

3. 打印結(jié)果

print(df)

輸出結(jié)果:

   項  目
0  1  0
1  1  1
2  1  2
3  1  3
4  1  4

三、實際應(yīng)用場景

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

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

四、可能的變體

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

五、總結(jié)

這段代碼展示了Pandas中幾個強大功能的組合使用:

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

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

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

相關(guān)文章

最新評論

金川县| 双流县| 怀来县| 泰和县| 盘锦市| 克什克腾旗| 长海县| 沿河| 兰坪| 台中市| 镇安县| 梅州市| 金门县| 桦川县| 闸北区| 澳门| 马公市| 专栏| 连州市| 铅山县| 大名县| 广南县| 定远县| 榆林市| 垦利县| 寿光市| 石城县| 泸州市| 清新县| 南宁市| 夏河县| 连云港市| 镇远县| 厦门市| 琼结县| 鸡西市| 太康县| 宾川县| 西藏| 米脂县| 梅州市|