如何用dict中的值替换数据帧系列/列中的旧字符串值?

时间:2018-08-13 16:45:42

标签: python-3.x pandas dataframe series

该问题与Remap values in pandas column with a dict有点相似,但是,答案已经过时,没有涵盖“ SettingWithCopyWarning”。

我只是想使用字典“ dict1”替换数据帧“ df”的列“ col”中的原始字符串。这是我的代码,它成功替换了值:

    temp_series = df.loc[:,col].copy()
    for name in temp_series:
        for old, new in q_names_dict.items():
            if (old.lower() == name.lower()):
                temp_series.replace(name, new, inplace=True)

-但是,当我尝试使用此副本“ temp_series”更新原始数据帧时,会收到“ SettingWithCopyWarning”。这是引发警告的代码:

df.loc[:,col] = temp_series
# The bottom three don't work either.
#df[col] = temp_series 
#df.loc[:,col].update(temp_series) 
#df[col].update(temp_series)      

1 个答案:

答案 0 :(得分:0)

通过将深层副本更改为浅层副本,我可以对原始数据帧“ df”进行更改。在文档中说明:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html

以下是启用浅表复制的代码:

temp_series = df.loc[:,col].copy(deep=False)

因此,使用上述代码后,我不必显式更新数据框。这也可以防止SettingWithCopyWarning。