如何为pandas DataFrame中非缺失值添加字符串前缀?
pandas非缺失值批量加指定前缀实现方法
核心思路
直接使用df.notna()生成的布尔掩码作为条件判断依据,结合pandas自带的where方法做批量条件替换:缺失值位置保留原始值,非缺失值位置统一转换为字符串后拼接+前缀即可。
实现步骤
- 首先构造示例测试DataFrame
import pandas as pd import numpy as np df = pd.DataFrame(dict( age=[5, 6, np.NaN], born=[pd.NaT, pd.Timestamp('1939-05-27'), pd.Timestamp('1940-04-25')], name=['Alfred', 'Batman', ''], toy=[None, 'Batmobile', 'Joker'] ))
- 基于
df.notna()的布尔结果做批量处理
result = df.where( cond=~df.notna(), # 缺失值位置条件为真,保留原始值 other='+' + df.astype(str) # 非缺失值位置条件为假,替换为加前缀后的字符串 )
运行结果
执行代码后输出的结果和预期完全一致:
age born name toy 0 +5.0 NaT +Alfred None 1 +6.0 +1939-05-27 +Batman +Batmobile 2 NaN +1940-04-25 + +Joker
说明
- 该方法会自动识别所有类型的缺失值:
np.NaN、pd.NaT、None都不会被修改,保留原始空值状态 - 空字符串属于非缺失值,会按规则正确添加
+前缀 - 提前用
astype(str)统一转换列类型,兼容数值、时间戳、字符串等不同类型的列,不会出现类型拼接报错
内容的提问来源于stack exchange,提问作者Luka Banfi
相关产品推荐
相关产品推荐

