如何对Pandas DataFrame排除指定列外的所有列批量执行ASCII转换?
批量处理Pandas指定列转换方案
你可以通过列过滤+批量映射的方式实现需求,不需要手动逐个列写转换逻辑,即使有上百个待处理列也可以通用:
- 第一步:过滤出所有需要处理的列,排除
_NAME和_TIMESTAMP两个不需要转换的固定列 - 第二步:将重复的转换逻辑封装为独立函数,用
applymap(pandas 2.1版本前)或者map(pandas 2.1版本及之后)批量应用到所有目标列
示例代码如下:
# 1. 筛选待转换列:排除两个非数值列 target_cols = [col for col in df.columns if col not in ['_NAME', '_TIMESTAMP']] # 2. 封装转换逻辑,和你原来的lambda逻辑完全一致 def value_convert(x): high_byte_char = chr(round(x / 256)) low_byte_char = chr(x % 256) return (high_byte_char + low_byte_char)[::-1] # 3. 批量应用转换,直接覆盖原列 # pandas 2.1之前版本用这个: df[target_cols] = df[target_cols].applymap(value_convert) # pandas 2.1及之后版本推荐用这个(性能更高,applymap已被弃用): # df[target_cols] = df[target_cols].map(value_convert)
如果你需要保留原始的数值列不被覆盖,可以在赋值时给新列加前缀/后缀即可,示例:
df[[f"{col}_converted" for col in target_cols]] = df[target_cols].applymap(value_convert)
内容的提问来源于stack exchange,提问作者user_v27
相关产品推荐
相关产品推荐

