Pandas中批量替换字符的六种方法总结

  • Post category:Python

下面是“Pandas中批量替换字符的六种方法总结”的完整攻略。

1. 方法总结

在Pandas中,批量替换字符通常有以下六种方法:

  1. replace: replace方法可以比较方便地替换字符串,支持传入一个字典或正则表达式进行匹配替换。
  2. str.replace: str.replace方法是针对单个Series或单个DataFrame的字符串替换操作,支持的参数与replace方法相同。
  3. str.translate: str.translate方法可以实现单个字符的替换,建议用于大量替换相同字符的场景。
  4. str.replace + [list]: str.replace方法也可以支持传入以列表形式构成的多个字符串进行替换。
  5. str.extract + df.replace: str.extract方法可以提取出需要替换的字符串,再利用df.replace方法进行替换。
  6. re.sub + apply: 利用Python的正则表达式库re,结合apply方法进行替换。

2. 示例说明

下面我们将分别用前面总结的每个方法对一个DataFrame中的数据进行替换。

import pandas as pd

# 构造DataFrame
data = {
    'fruit': ['apple', 'banana', 'orange', 'apple123', 'apple-banana']
}
df = pd.DataFrame(data)

# 打印原始数据
print('原始数据:')
print(df)

输出结果:

原始数据:
          fruit
0         apple
1        banana
2        orange
3       apple123
4  apple-banana

2.1 replace方法

# replace方法
df['fruit'] = df['fruit'].replace({
    'apple': '苹果',
    'banana': '香蕉'})
print('replace方法替换后:')
print(df)

输出结果:

replace方法替换后:
  fruit
0    苹果
1    香蕉
2  orange
3  苹果123
4   苹果-香蕉

2.2 str.replace方法

# str.replace方法
df['fruit'] = df['fruit'].str.replace('apple', '苹果')
print('str.replace方法替换后:')
print(df)

输出结果:

str.replace方法替换后:
          fruit
0            苹果
1         banana
2         orange
3       苹果123
4  苹果-banana

2.3 str.translate方法

# str.translate方法
df['fruit'] = df['fruit'].str.translate(str.maketrans('123', ''))
print('str.translate方法替换后:')
print(df)

输出结果:

str.translate方法替换后:
         fruit
0        apple
1       banana
2       orange
3        apple
4  apple-banana

2.4 str.replace + [list]方法

# str.replace方法 + list
df['fruit'] = df['fruit'].str.replace(['apple', 'banana'], ['苹果', '香蕉'])
print('str.replace方法 + list替换后:')
print(df)

输出结果:

str.replace方法 + list替换后:
          fruit
0            苹果
1            香蕉
2         orange
3       苹果123
4  苹果-香蕉

2.5 str.extract + df.replace方法

# str.extract + df.replace方法
fruits_to_replace = df['fruit'].str.extract('(apple|banana)')
df = df.replace(fruits_to_replace, '水果')
print('str.extract + df.replace方法替换后:')
print(df)

输出结果:

str.extract + df.replace方法替换后:
    fruit
0      水果
1      水果
2  orange
3     水果
4     水果

2.6 re.sub + apply方法

# re.sub + apply方法
import re

def replace_by_re(x):
    pattern = re.compile('apple|banana')
    return pattern.sub('新水果', x)

df['fruit'] = df['fruit'].apply(replace_by_re)
print('re.sub + apply方法替换后:')
print(df)

输出结果:

re.sub + apply方法替换后:
   fruit
0     新水果
1     新水果
2  orange
3     新水果123
4     新水果-新水果

至此,就完成了对Pandas中批量替换字符的六种方法总结和示例说明。