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

pandas update更新筛选DF时num_posts列未同步问题

错误原因

你的代码bug出在日期增量计算的步骤:

# 错误代码
df1 = df1['date'] + pd.DateOffset(months=plus_month_period)

这行代码直接把原本包含num_posts/date/user三列的DataFrame类型的df1,重新赋值成了仅存储date列计算结果的单列Series。你之前已经修改好的num_posts=10的内容随着变量覆盖被完全丢弃了。
df.update()是按照索引对齐+列名匹配的规则更新值的,传入的df1里已经没有num_posts列了,自然只会更新date列,num_posts列不会有任何变化。

修复方法

不要整体覆盖df1变量,仅对df1的date列做赋值修改即可,修正后的完整代码:

import pandas as pd
import datetime

df = pd.DataFrame({'num_posts': [5, 4, 4, 4, 1, 14],
                   'date': ['2022-06-10', '2022-06-14', 
                            '2022-06-14', '2020-09-12', 
                            '2020-09-29', '2020-10-15'],
                  'user': ['user4', 'user1', 'user1', 'user3', 'user4', 'user4']})

df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')

# 获取当前日期
new_date = datetime.datetime.now()
current_date = new_date.strftime("%Y-%m-%d")

# 筛选目标行
df1 = df.loc[(df['num_posts'] == 4) & (df['date'] == current_date)].copy()

# 修改num_posts为10
df1['num_posts'] = 10

# 日期增加1个月:仅修改date列,不覆盖整个df1
plus_month_period = 1
df1['date'] = df1['date'] + pd.DateOffset(months=plus_month_period)

# 同步回原DataFrame
df.update(df1)
print(df)
效果验证

运行修复后的代码,输出结果和你预期完全一致:符合筛选条件的行num_posts更新为10,日期顺延1个月,其余行数据保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:06:22