不使用 replace() 函数替换一列中的值

replace value in one column without using replace() function

我想在不使用 replace() 函数的情况下替换字符串。
只想使用 pandasnumpy.

示例数据:

# df
Col1
ab1
de4

替换逻辑为:

  1. a 将是 i
  2. b 将是 g
  3. d 将是 m
  4. e 将是 t
  5. 1 将是 2
  6. 4 将是 3

有什么方法可以创建字典并使用它来识别和替换?

# df
Col1   Col2
ab1    ig2
de4    mt3

您可以为其创建函数并使用应用。

import pandas as pd

df = pd.DataFrame()
df['col'] = ['asdsd', 'xxx', '41xwqa']

def custom_replace(element):
    translate_dict = {
        'a': 'i',
        'b': 'g',
        'd': 'm',
        'e': 't',
        '1': '2',
        '4': '3'
    }
    return_element = ''
    for char in element:
        try:
            return_element += translate_dict[char]
        except:
            return_element += char
    return return_element

df['col'].apply(custom_replace)

您可以使用 translate.

mapping = 'abde14'.maketrans({
    'a': 'i',
    'b': 'g',
    'd': 'm',
    'e': 't',
    '1': '2',
    '4': '3'
})

df['Col2'] = df.Col1.str.translate(mapping)

如果始终映射到 1 个字符,则此语法可能更紧凑。

mapping = str.maketrans('abde14', 'igmt23')