如何在Pandas DataFrame中编码列值:字母转N、数字转D
批量编码Pandas DataFrame的TransDetails列
嘿,你现在逐个替换字母的方法确实太繁琐了,这里有两个更高效的方案,能帮你快速实现把所有字母转成N、所有数字转成D的需求,同时还能保留连字符、空格这类非字母数字的字符:
方法1:正则表达式批量替换(最简洁)
Pandas的str.replace支持正则匹配,我们可以一次性定位所有字母和数字进行替换,不用挨个处理每个字母:
import pandas as pd # 对TransDetails列执行批量转换 df['TransDetails'] = df['TransDetails'].str.replace(r'[A-Za-z]', 'N', regex=True).str.replace(r'\d', 'D', regex=True)
细节说明:
r'[A-Za-z]':匹配所有大小写字母,统一替换为Nr'\d':匹配所有0-9的数字,统一替换为D- 链式调用两次
str.replace就能完成全部转换,像-、空格这类非目标字符会原样保留
方法2:自定义函数+apply(更灵活)
如果之后需要扩展处理其他特殊字符,自定义函数的方式会更可控,我们可以逐个检查每个字符的类型:
def encode_trans_content(s): encoded_list = [] for char in s: if char.isalpha(): encoded_list.append('N') elif char.isdigit(): encoded_list.append('D') else: # 保留非字母数字的原始字符 encoded_list.append(char) return ''.join(encoded_list) df['TransDetails'] = df['TransDetails'].apply(encode_trans_content)
效果验证
用你提供的示例数据,第一行NEFT-PUNB0315500-JITENDER SING会被转换为:NNNN-NNNNDDDDDD-NNNNNNN NNNN,完全符合你的编码要求。
内容的提问来源于stack exchange,提问作者nehaj
相关产品推荐
相关产品推荐

