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()