1. 程式人生 > >pandas利用replace進行全部替換或者通過選擇篩選後進行替換

pandas利用replace進行全部替換或者通過選擇篩選後進行替換

# -*- 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')