Python Pandas中用fillna()/replace()替换列中NAN为字典值的问题
解决pandas中fillna()无法填充字典对象的问题
嘿,我明白你遇到的问题了——直接用fillna(Bvalue)没法把NaN替换成目标字典,其实是因为pandas对fillna()的value参数有特殊的处理逻辑:如果传入的是字典,pandas会把它当成列名到填充值的映射表,而不是把这个字典当作单个值去填充缺失项。你的列是A和B,字典里的key是'KEY'和'VALUE',完全不匹配,所以代码自然不会生效啦。
下面给你两个简单可行的解决方案:
方案1:用apply()逐个处理元素
我们可以遍历B列的每个元素,判断如果是NaN就替换成目标字典,否则保留原内容:
import pandas as pd Bvalue = {'KEY':1,'VALUE':2} Temp_Data_DF['B'] = Temp_Data_DF['B'].apply(lambda x: Bvalue if pd.isna(x) else x)
方案2:用replace()直接替换NaN
replace()方法可以直接指定把np.nan替换成你想要的字典对象,操作更简洁:
import pandas as pd import numpy as np Bvalue = {'KEY':1,'VALUE':2} Temp_Data_DF['B'] = Temp_Data_DF['B'].replace(np.nan, Bvalue)
效果验证
运行上面任意一段代码后,你的DataFrame就会变成你期望的样子:
A B 0 1 {'KEY': 1, 'VALUE': 2} 1 2 {'KEY': 1, 'VALUE': 2} 2 3 {'KEY': 1, 'VALUE': 2}
小补充
如果你的DataFrame里的"NAN"是字符串类型(不是pandas默认的缺失值np.nan),那得先把它转换成真正的缺失值再填充:
Temp_Data_DF['B'] = Temp_Data_DF['B'].replace('NAN', np.nan)
内容的提问来源于stack exchange,提问作者sindhu
相关产品推荐
相关产品推荐

