如何用单个函数对Pandas多列应用split处理特殊字符
批量清理Pandas DataFrame列中冒号前缀的内容
解决方案
先定义需要处理的列名列表,再通过批量操作一次性处理所有目标列,替代重复的逐列赋值:
- 定义待处理列列表
cols_to_clean = [ 'Type of water point', 'Water point Functionality', 'WP_suitability', 'Ownership', 'Maintenance in charge', 'WASH management committee?' ]
- 批量处理列内容
沿用你原来的分割逻辑,通过apply批量应用字符串处理操作:
wp_clean[cols_to_clean] = wp_clean[cols_to_clean].apply( lambda col: col.str.split(':', n=1).str.get(-1) )
可选优化(更高效的正则提取)
如果想提升处理效率,也可以用正则表达式提取冒号后的内容,同时兼容无冒号的行(保留原内容):
wp_clean[cols_to_clean] = wp_clean[cols_to_clean].str.extract(r'(?:.*?:)?(.*)', expand=False)
这个正则的含义是:匹配可选的任意字符+冒号,然后捕获后面的所有内容,确保没有冒号的行也能返回原字符串。
内容的提问来源于stack exchange,提问作者Augustine
相关产品推荐
相关产品推荐

