pandas數據查找替換


pandas數據查找替換,提供以下三種方法:手工一個個替換、replace替換、map映射替換

除此之外,還可創建一個dataframe進行merge或join匹配(同vlookup)

首先創建數據:

import pandas as pd 

df = pd.DataFrame([["a", 'wait'], ["b", 'doing'], ["c", 'done'], ["d", 'closed'], ["e", 'cancel']],
                  columns=["task","status"])
df

得到以下的數據:

 

 

 將英文的狀態改成中文

1、df手工一個個替換,其他不相關的保持不變

# 狀態對應的映射
df.loc[df['status'] == 'wait', 'status'] = '未開始'
df.loc[df['status'] == 'doing', 'status'] = '進行中'
df.loc[df['status'] == 'done', 'status'] = '已完成'
df.loc[df['status'] == 'closed', 'status'] = '已關閉'
df.loc[df['status'] == 'cancel', 'status'] = '取消'
df.head()

 

2、replace替換,其他不相關的保持不變

# 實現方式二:用replace替換(2種形式)
df_temp02 = df
df_temp01['status'] = df['status'].replace(["wait", "doing"], ["未開始", "進行中"])
df_temp02['status'] = df['status'].replace({"wait":"未開始", "doing":"進行中"})
df_temp02.sample(5)

 

3、map映射替換,如果沒有映射的值,會變成NAN

# 實現方式三:通過map映射
# 此種方式的缺點:必須全量對應,如果不是全量匹配不上的就是NAN
df_temp03 = df
map_series = pd.Series(["未開始", "進行中", "已完成", "已關閉", '取消'], index=["wait", "doing", "done", "closed", "cancel"])
df_temp03['status'] = df_temp03['status'].map(map_series)
df_temp03.head()

df_temp04 = df
map_dict = {"wait":"未開始", "doing":"進行中", 'closed':'已關閉'}
df_temp04['status'] = df_temp04['status'].map(map_dict)
df_temp04.head()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM