DataFrame.replace(self, to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')[source]

将to_replace中给出的值替换为value。

DataFrame的值被动态替换为其他值。这与使用.loc或.iloc进行更新不同,后者要求您指定要使用某个值进行更新的位置。

参数:to_replace:

str,regex, list,dict,

Series,int, float, 或 None

如何找到将要被替换的值。

numeric, str 或 regex:

1)numeric: 等于to_replace的数值将被替换为value

2)str: 完全匹配to_replace的字符串将被替换为值

3)regex: 匹配to_replace的正则表达式将被替换为值

str, regex, 或 numeric的list:

1)首先,如果to_replace和value都是列表,

那么它们的长度必须相同。

2)其次,如果regex=True,

那么两个列表中的所有字符串都将被解释为regex,

否则它们将直接匹配。这对值没有太大影响,

因为您只能使用几种可能的替代正则表达式。

3)str、regex和numeric规则同样适用。

dict :

1)dict可用于为不同的现有值指定不同的替换值。

例如,{'a': 'b', 'y': 'z'}将值'a'替换为'b',

将值'y'替换为'z'。

要以这种方式使用dict, value参数应该为None。

2)对于数据格式,dict可以指定在不同的列中替换不同的值。

例如,

{'a': 1, 'b': 'z'}查找列'a'中的值1和列'b'中的值'z',

并用value中指定的值替换这些值。在这种情况下,

value参数不应该是None。除了指定要搜索的列之外,

您可以将此看作传递两个列表的特殊情况。

3)对于一个DataFrame嵌套字典,

用于DataFrame嵌套字典,

例如,{'a': {'b':np.nan}},

读取如下:在'a'列中查找值'b',

并将其替换为NaN。

要以这种方式使用嵌套的dict, value参数应该为None。

您也可以嵌套正则表达式。

注意列名(嵌套字典中的顶级字典键)不能是正则表达式。

None:

1)这意味着regex参数必须是字符串、

编译regex或list、dict、ndarray或这类元素的Series。

如果值也是None,那么这必须是嵌套字典或序列。

请参阅示例部分以获得这些示例。

value : scalar, dict, list, str, regex, 默认 None:

值,以替换与to_replace匹配的任何值。

对于DataFrame,可以使用一组值来指定为每个列使用哪个值

(不属于该数据格式的列将不会被填充)。

这些对象的正则表达式、字符串和列表或字典也是允许的。

inplace :bool, 默认 False

如果是真的,在适当的地方。

注意:这将修改这个对象上的任何其他视图(例如,

DataFrame中的一个列)。如果为真,则返回调用者。

limit: int, 默认None

向前或向后填充的最大尺寸gap。

regex :bool或与to_replace相同的类型, 默认False

是否将to_replace和/或value解释为正则表达式。

如果这是True,那么to_replace必须是一个字符串。

也可以是正则表达式或正则表达式的列表、dict或数组,

在这种情况下to_replace必须为None。

method :{‘pad’, ‘ffill’, ‘bfill’, None}

当用于替换时,当to_replace是标量时,

列表或元组,值为None时使用的方法。

在版本0.23.0中更改:添加到DataFrame中。

返回值:DataFrame

更换后的对象。

Raises:AssertionError

如果regex不是bool, to_replace不是None。

TypeError

1)如果to_replace是一个dict,

而值不是list、dict、ndarray或Series

2)如果to_replace为None,

并且regex不能编译为正则表达式,

或者是list、dict、ndarray或Series。

3)替换多个bool或datetime64对象时,

to_replace的参数与被替换值的类型不匹配

ValueError

如果一个列表或一个ndarray被传递给

to_replace和value,

但是它们的长度不相同。

Notes

1) 正则表达式替换在底层使用re.sub执行。替换re.sub的规则是相同的。

2) 正则表达式将只替换字符串,这意味着您不能提供匹配浮点数的正则表达式,也不能期望框架中具有数字dtype的列被匹配。但是,如果这些浮点数是字符串,那么您可以这样做。

3) 这个方法有很多选项。我们鼓励您试验和尝试这种方法,以获得它如何工作的直觉。

4) 当使用dict作为to_replace值时,就像dict中的键是to_replace部分,而dict中的值是值参数一样。

例子,

标量 “to_replace”和“value”>>> s = pd.Series([0, 1, 2, 3, 4])

>>> s.replace(0, 5)

0 5

1 1

2 2

3 3

4 4

dtype: int64

>>> df = pd.DataFrame({'A': [0, 1, 2, 3, 4],

... 'B': [5, 6, 7, 8, 9],

... 'C': ['a', 'b', 'c', 'd', 'e']})

>>> df.replace(0, 5)

A B C

0 5 5 a

1 1 6 b

2 2 7 c

3 3 8 d

4 4 9 e

类似list的“to_replace”>>> df.replace([0, 1, 2, 3], 4)

A B C

0 4 5 a

1 4 6 b

2 4 7 c

3 4 8 d

4 4 9 e

>>> df.replace([0, 1, 2, 3], [4, 3, 2, 1])

A B C

0 4 5 a

1 3 6 b

2 2 7 c

3 1 8 d

4 4 9 e

>>> s.replace([1, 2], method='bfill')

0 0

1 3

2 3

3 3

4 4

dtype: int64

类似dict的“to_replace”>>> df.replace({0: 10, 1: 100})

A B C

0 10 5 a

1 100 6 b

2 2 7 c

3 3 8 d

4 4 9 e

>>> df.replace({'A': 0, 'B': 5}, 100)

A B C

0 100 100 a

1 1 6 b

2 2 7 c

3 3 8 d

4 4 9 e

>>> df.replace({'A': {0: 100, 4: 400}})

A B C

0 100 5 a

1 1 6 b

2 2 7 c

3 3 8 d

4 400 9 e

正则表达式“to_replace”>>> df = pd.DataFrame({'A': ['bat', 'foo', 'bait'],

... 'B': ['abc', 'bar', 'xyz']})

>>> df.replace(to_replace=r'^ba.$', value='new', regex=True)

A B

0 new abc

1 foo new

2 bait xyz

>>> df.replace({'A': r'^ba.$'}, {'A': 'new'}, regex=True)

A B

0 new abc

1 foo bar

2 bait xyz

>>> df.replace(regex=r'^ba.$', value='new')

A B

0 new abc

1 foo new

2 bait xyz

>>> df.replace(regex={r'^ba.$': 'new', 'foo': 'xyz'})

A B

0 new abc

1 xyz new

2 bait xyz

>>> df.replace(regex=[r'^ba.$', 'foo'], value='new')

A B

0 new abc

1 new new

2 bait xyz

注意,当替换多个bool或datetime64对象时,to_replace参数中的数据类型必须与被替换值的数据类型匹配:>>> df = pd.DataFrame({'A': [True, False, True],

... 'B': [False, True, False]})

>>> df.replace({'a string': 'new value', True: False}) # raises

Traceback (most recent call last):

...

TypeError: Cannot compare types 'ndarray(dtype=bool)' and 'str'

这将引发类型错误,因为其中一个dict键不是用于替换的正确类型。

比较s的行为。替换({'a': None})和s.replace('a', None)了解to_replace参数的特性:>>> s = pd.Series([10, 'a', 'a', 'b', 'a'])

当使用dict作为to_replace值时,就像dict中的值等于value参数一样。s.replace({'a': None}) 等价于s.replace(to_replace={'a': None}, value=None, method=None):>>> s.replace({'a': None})

0 10

1 None

2 None

3 b

4 None

dtype: object

当value=None和to_replace是标量、列表或元组时,replace使用方法参数(默认'pad')进行替换。这就是为什么在第1和第2行中'a'值被替换为10,在本例中在第4行中替换为'b'。该命令s.replace('a', None)实际上等于s.replace(to_replace='a', value=None, method='pad'):>>> s.replace('a', None)

0 10

1 10

2 10

3 b

4 b

dtype: object

python replace函数_Python pandas.DataFrame.replace函数方法的使用相关推荐

  1. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is prim ...

  2. python数据去重的函数_python pandas dataframe 去重函数的具体使用

    今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({' ...

  3. python convert函数_Python pandas.DataFrame.tz_convert函数方法的使用

    DataFrame.tz_convert(tz, axis=0, level=None, copy=True)[source] 将tz-aware axis转换为目标时区. 参数:tz:str或 tz ...

  4. python resample函数_Python pandas.DataFrame.resample函数方法的使用

    DataFrame.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=Non ...

  5. python iloc函数_Python pandas.DataFrame.iloc函数方法的使用

    DataFrame.iloc 纯粹基于整数位置的索引,用于按位置选择. .iloc[] 主要是基于整数位置(从轴的0到长度-1),但也可以与布尔数组一起使用. 允许的输入:整数, 例如, 5 整数的列 ...

  6. python agg函数_Python pandas.DataFrame.agg函数方法的使用

    DataFrame.agg(func, axis=0, *args, **kwargs) 使用指定axis上的一个或多个操作Aggregate. 参数:func: function, str, lis ...

  7. python describe函数_Python pandas.DataFrame.describe函数方法的使用

    DataFrame.describe(self, percentiles=None, include=None, exclude=None) 生成描述性统计数据,总结数据集分布的集中趋势,分散和形状, ...

  8. python mul函数_Python pandas.DataFrame.mul函数方法的使用

    DataFrame.mul(self, other, axis='columns', level=None, fill_value=None)DataFrame.multiply(self, othe ...

  9. python中cumsum函数_Python pandas.DataFrame.cumsum函数方法的使用

    DataFrame.cumsum(self, axis=None, skipna=True, *args, **kwargs) 返回DataFrame或Series轴上的累计和. 返回包含累计和的相同 ...

最新文章

  1. 一文尽览!文本对抗攻击基础、前沿及相关资源
  2. .NET福利集锦【持续整理中】
  3. Upwork 发布最赚钱的编程语言 Top 15
  4. 一个NVIDIA驱动安装报错——ERROR: The nvidia kernel module was not created.
  5. Harmonious Graph CodeForces - 1253D(思维+并查集)
  6. c#:细说时区、DateTime和DateTimeOffset在国际化中的应用
  7. elisa标准曲线怎么做_ELISA标准曲线绘制
  8. 前端 ---jQuery的补充
  9. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
  10. 软件工程随堂小作业—— 寻找“水王”(C++)
  11. 深度学习之Bottleneck Layer or Bottleneck Features
  12. 常用的简单的数值比较方法
  13. 海康rtsp抓包分析
  14. Calendar类、自定义实现日历控件
  15. 学习java之前应该先了解哪些知识?
  16. 利用soapUI获取freemarker的ftl文件模板
  17. IOS15.4无法运行WebGL2.0问题
  18. HUNNU 11786 Sir Charles Antony Richard Hoare
  19. obd协议 混动车_OBD协议
  20. ubuntu chm文档阅读

热门文章

  1. 解决Win10家庭版操作文件夹提示需要管理员权限
  2. 27_TFTLCD实验
  3. 输入编码,自动匹配并输出相对应的名称
  4. latex表格中插入图片以及排版
  5. Tecplot运行报错:undefined symbol: FT_Done_MM_Var
  6. Centos中用户相关操作(创建用户、设置密码、切换用户、修改用户信息、附加组、删除用户、用户分类)
  7. 安卓系统linux启动脚本,Android开机执行脚本
  8. AFS文件目录数据库系统初步方案规划
  9. java 字符串输出字符_输出java字符串
  10. 从优秀IT项目经理到千万富翁的距离只有1m——如何当好项目经理