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

Pandas:基于星期几调整周数,以周三为分界点的实现求助

调整DataFrame周数:以周三为分界点更新周数

原始DataFrame

DateWeek_NumWeekDay
01/01/231Sunday
02/01/231Monday
04/01/231Wednesday
05/01/231Thursday
07/01/231Saturday

需求

以周三为分界点,周三之后(不含周三)的日期对应的Week_Num加1,得到目标结果:

DateWeek_NumWeekDay
01/01/231Sunday
02/01/231Monday
04/01/231Wednesday
05/01/232Thursday
07/01/232Saturday

解决方案

步骤1:导入依赖库并构造DataFrame

import pandas as pd
import numpy as np

# 构造原始数据
data = {
    'Date': ['01/01/23', '02/01/23', '04/01/23', '05/01/23', '07/01/23'],
    'Week_Num': [1, 1, 1, 1, 1],
    'WeekDay': ['Sunday', 'Monday', 'Wednesday', 'Thursday', 'Saturday']
}
df = pd.DataFrame(data)

步骤2:映射星期到数字并更新周数

先定义星期到数字的映射(周三对应3,周四及以后数字大于3),再用条件判断更新Week_Num:

# 定义星期与数字的映射关系
weekday_map = {
    'Sunday': 0,
    'Monday': 1,
    'Tuesday': 2,
    'Wednesday': 3,
    'Thursday': 4,
    'Friday': 5,
    'Saturday': 6
}

# 用np.where实现条件更新:星期数字>3则周数+1,否则保持原周数
df['Week_Num'] = np.where(df['WeekDay'].map(weekday_map) > 3, df['Week_Num'] + 1, df['Week_Num'])

验证结果

执行后df的输出如下:

DateWeek_NumWeekDay
01/01/231Sunday
02/01/231Monday
04/01/231Wednesday
05/01/232Thursday
07/01/232Saturday

替代方案(无需临时映射列)

也可以直接用apply一行完成:

df['Week_Num'] = df.apply(
    lambda row: row['Week_Num'] + 1 if weekday_map[row['WeekDay']] > 3 else row['Week_Num'],
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:50:37