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 :
如何找到将要被替换的值。 numeric, str 或 regex: 1)numeric: 等于 2)str: 完全匹配 3)regex: 匹配 str, regex, 或 numeric的list: 1)首先,如果 那么它们的长度必须相同。 2)其次,如果 那么两个列表中的所有字符串都将被解释为 否则它们将直接匹配。这对值没有太大影响, 因为您只能使用几种可能的替代正则表达式。 3) dict : 1) 例如, 将值 要以这种方式使用 2)对于数据格式,
例如,
和列 并用
您可以将此看作传递两个列表的特殊情况。 3)对于一个 用于DataFrame嵌套字典, 例如, 读取如下 并将其替换为 要以这种方式使用嵌套的
您也可以嵌套正则表达式。 注意列名(嵌套字典中的顶级字典键)不能是正则表达式。 None: 1)这意味着 编译
如果值也是 请参阅示例部分以获得这些示例。 value : scalar, dict, list, str, regex, 默认 None: 值,以替换与 对于DataFrame, 可以使用一组值来指定为每个列使用哪个值 (不属于该数据格式的列将不会被填充)。 这些对象的正则表达式、字符串和列表或字典也是允许的。 inplace : 如果是真的,在适当的地方。 注意:这将修改这个对象上的任何其他视图(例如, DataFrame中的一个列)。如果为真,则返回调用者。 limit : 最大大小间隔,用于向前填充或向后填充。 自版本 2.1.0 起已弃用。 regex : 是否将 如果这是 也可以是正则表达式或正则表达式的列表、dict或数组, 在这种情况下 method : 当用于替换时,当 列表或元组,值为 在版本0.23.0中更改:添加到DataFrame中。 |
返回值: | DataFrame 更换后的对象。 |
Raises: | AssertionError 如果
1)如果 而值不是 2)如果 并且regex不能编译为正则表达式, 或者是 3)替换多个
如果一个列表或一个
但是它们的长度不相同。 |
Notes
1) 正则表达式替换在底层使用re.sub
执行。替换re.sub
的规则是相同的。
2) 正则表达式将只替换字符串,这意味着您不能提供匹配浮点数的正则表达式,也不能期望框架中具有数字dtype
的列被匹配。但是,如果这些浮点数是字符串,那么您可以这样做。
3) 这个方法有很多选项。我们鼓励您试验和尝试这种方法,以获得它如何工作的直觉。
4) 当使用dict
作为to_replace
值时,就像dict
中的键是to_replace
部分,而dict
中的值是值参数一样。
例子,
1)替换单个值
import pandas as pd
# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# 替换值
df_replaced = df.replace(1, 100)
print(df_replaced)
2)替换多个值
import pandas as pd
# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# 替换多个值
df_replaced = df.replace({1: 100, 4: 400})
print(df_replaced)
3)替换多个值和不同列
import pandas as pd
# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# 替换多个值并指定不同的列
df_replaced = df.replace({'A': {1: 100, 2: 200},
'B': {4: 400}})
print(df_replaced)
4)使用正则表达式替换
import pandas as pd
# 创建带有字符串的 DataFrame
df = pd.DataFrame({'A': ['apple', 'banana',
'cherry'], 'B': ['fruit', 'fruit', 'fruit']})
# 使用正则表达式替换
df_replaced = df.replace(r'apple', 'orange',
regex=True)
print(df_replaced)
5)就地替换
import pandas as pd
df = pd.DataFrame({'A': [1,1,2,1], 'B': ['foo','foo','bar','foo']})
# 就地替换
df.replace(1, 100, inplace=True)
print(df)