python replace函数_Python pandas.DataFrame.replace函数方法的使用
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函数方法的使用相关推荐
- 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 ...
- python数据去重的函数_python pandas dataframe 去重函数的具体使用
今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({' ...
- python convert函数_Python pandas.DataFrame.tz_convert函数方法的使用
DataFrame.tz_convert(tz, axis=0, level=None, copy=True)[source] 将tz-aware axis转换为目标时区. 参数:tz:str或 tz ...
- python resample函数_Python pandas.DataFrame.resample函数方法的使用
DataFrame.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=Non ...
- python iloc函数_Python pandas.DataFrame.iloc函数方法的使用
DataFrame.iloc 纯粹基于整数位置的索引,用于按位置选择. .iloc[] 主要是基于整数位置(从轴的0到长度-1),但也可以与布尔数组一起使用. 允许的输入:整数, 例如, 5 整数的列 ...
- python agg函数_Python pandas.DataFrame.agg函数方法的使用
DataFrame.agg(func, axis=0, *args, **kwargs) 使用指定axis上的一个或多个操作Aggregate. 参数:func: function, str, lis ...
- python describe函数_Python pandas.DataFrame.describe函数方法的使用
DataFrame.describe(self, percentiles=None, include=None, exclude=None) 生成描述性统计数据,总结数据集分布的集中趋势,分散和形状, ...
- python mul函数_Python pandas.DataFrame.mul函数方法的使用
DataFrame.mul(self, other, axis='columns', level=None, fill_value=None)DataFrame.multiply(self, othe ...
- python中cumsum函数_Python pandas.DataFrame.cumsum函数方法的使用
DataFrame.cumsum(self, axis=None, skipna=True, *args, **kwargs) 返回DataFrame或Series轴上的累计和. 返回包含累计和的相同 ...
最新文章
- 一文尽览!文本对抗攻击基础、前沿及相关资源
- .NET福利集锦【持续整理中】
- Upwork 发布最赚钱的编程语言 Top 15
- 一个NVIDIA驱动安装报错——ERROR: The nvidia kernel module was not created.
- Harmonious Graph CodeForces - 1253D(思维+并查集)
- c#:细说时区、DateTime和DateTimeOffset在国际化中的应用
- elisa标准曲线怎么做_ELISA标准曲线绘制
- 前端 ---jQuery的补充
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
- 软件工程随堂小作业—— 寻找“水王”(C++)
- 深度学习之Bottleneck Layer or Bottleneck Features
- 常用的简单的数值比较方法
- 海康rtsp抓包分析
- Calendar类、自定义实现日历控件
- 学习java之前应该先了解哪些知识?
- 利用soapUI获取freemarker的ftl文件模板
- IOS15.4无法运行WebGL2.0问题
- HUNNU 11786 Sir Charles Antony Richard Hoare
- obd协议 混动车_OBD协议
- ubuntu chm文档阅读
热门文章
- 解决Win10家庭版操作文件夹提示需要管理员权限
- 27_TFTLCD实验
- 输入编码,自动匹配并输出相对应的名称
- latex表格中插入图片以及排版
- Tecplot运行报错:undefined symbol: FT_Done_MM_Var
- Centos中用户相关操作(创建用户、设置密码、切换用户、修改用户信息、附加组、删除用户、用户分类)
- 安卓系统linux启动脚本,Android开机执行脚本
- AFS文件目录数据库系统初步方案规划
- java 字符串输出字符_输出java字符串
- 从优秀IT项目经理到千万富翁的距离只有1m——如何当好项目经理