pandas利用replace進行全部替換或者通過選擇篩選後進行替換
阿新 • • 發佈:2018-11-09
# -*- coding: utf-8 -*- import pandas as pd #建立資料集 df = pd.DataFrame( { '名稱':['產品1','產品2','產品3','產品4','產品5','產品6','產品7','產品8'], '數量':['A','0.7','0.8','0.4','0.7','B','0.76','0.28'], '金額':['0','0.48','0.33','C','0.74','0','0','0.22'], '合計':['D','0.37','0.28','E','0.57','F','0','0.06'], } ) #搜尋整個DataFrame, 並將所有符合條件的元素全部替換。操作之後,其實原DataFrame是並沒有改變的。改變的只是一個複製品。 df.replace('A', 0.1) #如果需要改變原資料,需要新增常用引數 inplace=True df.replace('A', 0.1, inplace=True) #inplace這個引數在一般情況沒多大用處,但是如果只替換部分割槽域時,inplace引數就有用了 df['金額'].replace(0, 0.22, inplace=True) ''' 在上面這個操作中,‘合計’這一列中的0,並沒有被替換。 只有‘金額’這一列的0被替換,而且,替換後的結果不需要我們再和原資料進行合併操作,直接體現在原資料中。 ''' #可以用字典形式替換多個值 df.replace({'C':0.9999, 'F':0.7777}) df.replace(['C', 'F'], [0.999, 0.777]) df['合計'].replace({'D':0.11111, 'F':0.22222}, inplace=True) #如果替換的值都是一樣的話 df.replace(['C', 'F'], 0.33333}) df['合計'].replace(['D', 'F'], 0.0111, inplace=True) #引數regex,可以使用正則表示式替換多個 df.replace('[A-Z]', 0.99, regex=True) #只需要替換某個資料的部分內容 df['名稱'].str.replace('產品', 'product')