如何在Pandas DataFrame指定列的非空值后添加百分号?
解决Pandas DataFrame列添加%符号的问题
你的问题出在column2列混合了数值类型与缺失值(None/NaN),直接使用df['column2'] += '%'会因类型不兼容触发报错——数字无法直接和字符串进行拼接,Pandas的广播机制也无法处理这种混合类型的操作。
以下是两种可行的解决方案:
方法一:使用apply针对性处理
这是最直观的方式,只对非缺失值添加%符号,保留缺失值原样:
import pandas as pd # 示例DataFrame df = pd.DataFrame({'column1': [1,2,3], 'column2': [1, None, 2]}) # 处理column2列 df['column2'] = df['column2'].apply(lambda x: f"{x}%" if pd.notna(x) else x)
执行后得到的结果就是你预期的:
column1 column2 0 1 1% 1 2 None 2 3 2%
pd.notna(x)会判断当前值是否为非缺失值(包括识别None和NaN),满足条件则通过f-string将数值转为字符串并追加%,否则返回原缺失值。
方法二:先转字符串再修正缺失值
如果你的列中None已被Pandas转为NaN,转字符串后会变成'nan',可以先转字符串再替换回None,之后追加%:
df['column2'] = df['column2'].astype(str).replace('nan', None) df['column2'] = df['column2'].apply(lambda x: x + '%' if x is not None else x)
这种方法适合需要先统一列类型的场景,但相比方法一稍显繁琐。
内容的提问来源于stack exchange,提问作者sruthi
相关产品推荐
相关产品推荐

