Python如何判断DataFrame日期列是否为每月第二个周一并返回布尔值
解决方案
完整代码
import pandas as pd # 你之前读取csv的代码保留即可,示例: # df = pd.read_csv("你的文件路径.csv") # 1. 将字符串格式的Date列转换为可计算的datetime格式 df['Date'] = pd.to_datetime(df['Date'], format='%Y/%m/%d') # 2. 生成Date Check列,判断是否为当月第二个周一 df['Date Check'] = df['Date'].apply(lambda x: (x.weekday() == 0) & (7 < x.day <= 14)) # 如果你需要返回字符串格式的'True'/'False',可额外执行下面这行 # df['Date Check'] = df['Date Check'].astype(str)
代码说明
pd.to_datetime():把从csv读取到的字符串类型日期(比如2019/01/01)转换为日期格式,参数format='%Y/%m/%d'对应你日期的结构:%Y代表4位年份,%m代表2位月份,%d代表2位日期,中间用/分隔。weekday():日期对象的内置方法,返回0-6的整数对应周一到周日,0=周一、1=周二,以此类推,所以x.weekday() == 0可以筛选出所有周一的日期。7 < x.day <=14:每个月的第一个周一最晚出现在7号,第二个周一必然落在8号到14号的区间内,两个条件同时满足就是当月第二个周一。apply():把判断逻辑遍历应用到Date列的每一行,返回的布尔值直接存入新列即可。
验证提示
你可以随机抽取几个结果手动核对,比如2024年3月的第二个周一是3月11日,代入逻辑:weekday返回0,日期11满足7<11<=14,返回True,符合预期。
内容的提问来源于stack exchange,提问作者HaoAreYou
相关产品推荐
相关产品推荐

