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