import pandas as pd
df = pd.DataFrame({
'col1':[99,99,99],
'col2':[4,5,6],
'col3':[7,None,9]
})
col_list = ['col1','col2']
df[col_list].replace(99,0,inplace=True)
这会生成警告并保持数据帧不变。
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
我希望能够对用户指定的列的子集应用替换方法。我还想使用 inplace = True 来避免复制数据帧,因为它很大。任何关于如何实现这一目标的想法将不胜感激。
最佳答案
当您选择要替换为 df[col_list]
的列时,系统会创建数据帧的切片(副本)。副本已更新,但从未写回原始数据帧。
您应该一次替换一列或使用嵌套字典映射:
df.replace(to_replace={'col1' : {99 : 0}, 'col2' : {99 : 0}},
inplace=True)
可以自动生成to_replace
的嵌套字典:
d = {col : {99:0} for col in col_list}
关于python - 如何在 inplace = True 的选定列上应用 pandas.DataFrame.replace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50996864/