Pandas 使用字典将空替换为基于列的值

Pandas 使用字典将空替换为基于列的值,pandas,replace,Pandas,Replace,我有一个包含几十列的数据框架。我想用特定的数字或字符串替换NaN或空值,具体取决于列。是否有一种词典方法可以奏效?下面的字典示例,不确定如何将其应用于数据帧。使用Python2.7 mydict ={'ColA': -999, 'ColB': -888, 'ColC': 'TBD'} 这项工作: # mydf = dataframe already in working memory mydict = {'ColA': -999, 'ColB': -888, 'ColC': 'TBD'} df

我有一个包含几十列的数据框架。我想用特定的数字或字符串替换NaN或空值,具体取决于列。是否有一种词典方法可以奏效?下面的字典示例,不确定如何将其应用于数据帧。使用Python2.7

mydict ={'ColA': -999, 'ColB': -888, 'ColC': 'TBD'}
这项工作:

# mydf = dataframe already in working memory
mydict = {'ColA': -999, 'ColB': -888, 'ColC': 'TBD'}
df_clean = mydf
for col in mydict:
    fill_val = mydict.get(col)
    df_clean[col] = df_clean[col].fillna(fill_val)

只需使用pandas.DataFrame.fillna:

import pandas as pd

df = pd.DataFrame({'ColA': [1, np.nan, 3], 'ColB':[10, np.nan, 30], 'ColC':[100, np.nan, 300]})
mydict ={'ColA': -999, 'ColB': -888, 'ColC': 'TBD'}
new_df = df.fillna(mydict)
print(new_df)
输出:

    ColA   ColB ColC
0    1.0   10.0  100
1 -999.0 -888.0  TBD
2    3.0   30.0  300