该问题与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)
答案 0 :(得分:0)
通过将深层副本更改为浅层副本,我可以对原始数据帧“ df”进行更改。在文档中说明:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html
以下是启用浅表复制的代码:
temp_series = df.loc[:,col].copy(deep=False)
因此,使用上述代码后,我不必显式更新数据框。这也可以防止SettingWithCopyWarning。