python pandas文本替换

文本替换
在进行数据处理时我们可以使用替换功能剔除我们不想要的内容,换成想要的内容。这在数据处理中经常使用,因为经过人工整理的数据往往不理想,需要进行替换操作。我们使用.str.replace()方法来完成这一
操作。例如,对于以下一些金额数据,我们想去除货币符号,为后续转换为数字类型做准备,因为非数字元素的字符无法转换为数字类型:
# 带有货币符的数据
s = pd.Series(['10', '-¥20', '¥3,000'], dtype="string")
# 将人民币符号替换为空
s.str.replace('¥', '')
'''
0 10
1 -20
2 3,000
dtype: string
'''
# 如果需要数字类型,还需要将逗号剔除
s.str.replace(r'¥|,','')
'''
0 10
1 -20
2 3000
dtype: string
'''
注意,.str.replace()方法的两个基本参数中,第一个是旧内容(希望被替换的已有内容),第二个是新内容(替换成的新内容)。替换字符默认是支持正则表达式的,如果被替换内容是一个正则表达式,可以使
用regex=False关闭对正则表达式的支持。在被替换字符位还可以传入一个定义好的函数或者直接使用lambda。另外,替换工作也可以使用df.replace()和s.replace()完成。
11.3.6 指定替换
str.slice_replace()可实现保留选定内容,替换剩余内容:
# 构造数据
s = pd.Series(['ax', 'bxy', 'cxyz'])
# 保留第一个字符,其他的替换或者追加T
s.str.slice_replace(1, repl='T')
'''
0 aT
1 bT
2 cT
dtype: object
'''
# 指定位置前删除并用T替换
s.str.slice_replace(stop=2, repl='T')
'''
0 T
1 Ty
2 Tyz
dtype: object
'''
# 指定区间的内容被替换
s.str.slice_replace(start=1, stop=3, repl='T')
'''
0 aT
1 bTy
2 cTyz
dtype: object
'''
11.3.7 重复替换
可以使用.str.repeat()方法让原有文本内容重复:
# 将整体重复两次
pd.Series(['a', 'b', 'c']).repeat(repeats=2)
'''
0 a
0 a
1 b
1 b
2 c
2 c
dtype: object
'''
# 将每一行的内容重复两次
pd.Series(['a', 'b', 'c']).str.repeat(repeats=2)
'''
0 aa
1 bb
2 cc
dtype: object
'''
# 指定每行重复几次
pd.Series(['a', 'b', 'c']).str.repeat(repeats=[1, 2, 3])
'''
0 a
1 bb
2 ccc
dtype: object

 

posted @ 2024-01-28 08:23  myrj  阅读(76)  评论(0编辑  收藏  举报