为什么 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
我有一个包含以下列的数据框
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