python - 如何在 inplace = True 的选定列上应用 pandas.DataFrame.replace ?

标签 python pandas

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/

相关文章:

python - 创建和流式传输大型存档而不将其存储在内存或磁盘上

Python 类继承

python - Pandas :在两个数据框中找到匹配的行(不使用 `merge` )

python - 两个 Pandas 数据框中的共同列列表

python - Pandas 在每组中找到满足条件的最大值

python - 如何识别谷歌应用引擎中引用属性损坏的对象

python - 搜索线路,拉取具体数据

python - 是否有人使用 zeromq 在同一进程中协调多个 Python 解释器?

python - 在 Pandas Dataframe 上使用 groupby 按一列重新排列,其中仅另一列的最大值

python - 如何使用 Python Pandas 创建 'yyyymmdd' 格式的日期字符串列表?