You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Loc与Replace导致值被替换为None的问题排查

问题原因

你的代码出错是因为replace方法加了inplace=True参数——这个参数会让方法直接修改原数据对象,返回值是None,所以你相当于把None赋值给了目标行的date列,才会出现替换后变成None的情况。

修正方案

方案1:移除inplace=True直接赋值

去掉inplace=True,让replace返回修改后的结果,再赋值给目标列:

df1['date'].loc[df1['client_name'] == 'sample'] = df1['date'].loc[df1['client_name'] == 'sample'].replace('2023-09-01', '2023-09-30')

方案2:更规范的链式loc定位

先定位行和列,再做替换赋值,逻辑更清晰:

df1.loc[df1['client_name'] == 'sample', 'date'] = df1.loc[df1['client_name'] == 'sample', 'date'].replace('2023-09-01', '2023-09-30')

方案3:精准条件替换(推荐)

先筛选出同时满足client_name='sample'和date='2023-09-01'的行,直接替换,避免误改其他不需要修改的日期:

# 构建双重条件的掩码
mask = (df1['client_name'] == 'sample') & (df1['date'] == '2023-09-01')
# 仅替换符合条件的行
df1.loc[mask, 'date'] = '2023-09-30'

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:08:15