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

猜你喜欢

转载自blog.csdn.net/longwei92/article/details/83275604