Pandas中填充NaN为指定字符串且保留None值的解决方案
只填充DataFrame中的NaN值,保留None值不变
Pandas的fillna()方法会同时处理NaN和None,要实现只替换NaN为指定字符串(比如'x')、保留None的需求,有两种简洁的方法:
方法1:使用replace()精准替换NaN
replace()可以单独匹配np.nan进行替换,不会影响None值,代码示例:
import pandas as pd import numpy as np # 构造示例DataFrame data = { 'A': [12, None, np.nan, 0], 'B': [0, np.nan, 9.8, np.nan], 'C': [None, None, 1, 1] } df = pd.DataFrame(data) # 仅将NaN替换为'x' df = df.replace({np.nan: 'x'}) print(df)
输出结果:
A B C 0 12 0 None 1 None x None 2 x 9.8 1 3 0 x 1
方法2:使用applymap()自定义判断逻辑
如果需要针对不同数据类型做更灵活的处理,可通过applymap()遍历每个元素,仅替换NaN:
def fill_nan_only(val): # 仅当元素是浮点型且为NaN时替换 if isinstance(val, float) and np.isnan(val): return 'x' return val df = df.applymap(fill_nan_only)
这个方法适配混合数据类型场景,确保对象列中的None不会被误替换。
内容的提问来源于stack exchange,提问作者Cansu Zöhre
相关产品推荐
相关产品推荐

