为什么 pandas.replace inplace = True 不起作用

why pandas.replace inplace = True doesnt work

我有一个包含以下列的数据框

     A   B    C      D
0   1.0 1.0 cob     3.0
1   1.0 1.0 hello   3.0
2   1.0 1.0         3.0
3   1.0 1.0 c       3.0

我正在尝试替换 'D' 列中对应于具有 cob 和 c 的 'C' 列的值,所以我使用了如下所示的替换命令

df2['D'][(df2['C'].isin(['cob','c']))].replace(3,5)

并且输出正常

0    5.0
3    5.0
Name: D, dtype: float64

但是当我使用 inplace=True 选项替换它时它不起作用

df2['D'][(df2['C'].isin(['cob','c']))].replace(3,5,inplace=True)
df2['D']

并且输出只有 3 而不是 5

0    3.0
1    3.0
2    3.0
3    3.0
Name: D, dtype: float64

谁能帮我解决这个问题

如果您想用特定值替换任何起始值:

df.loc[df['C'].isin(['cob', 'c']), 'D'] = 5

如果你也想保证起始值为3:

df.loc[df['C'].isin(['cob', 'c'])&df['D'].eq(3), 'D'] = 5

输出:

     A    B      C    D
0  1.0  1.0    cob  5.0
1  1.0  1.0  hello  3.0
2  1.0  1.0    3.0  NaN
3  1.0  1.0      c  5.0