Python中筛选DataFrame的12月日期数据,代码失效如何解决?
解决方法
你的代码出错原因有两个:
df['Date'][4:6]是对整个Series做行切片,不是提取每个日期的月份部分- Date列是数字类型,无法直接进行字符串切片操作
给你两种可行的筛选方式:
方法一:转字符串提取月份
把数字类型的Date转为字符串,提取对应月份的位置进行比较:
df = df[df['Date'].astype(str).str[4:6] == '12']
原理:astype(str)将数字转为字符串,str[4:6]对每个日期字符串提取第4到第6位(对应YYYYMMDD里的MM部分),再和字符串'12'匹配筛选。
方法二:数学运算提取月份
不用类型转换,通过整除和取模直接提取月份:
df = df[(df['Date'] // 100) % 100 == 12]
原理:df['Date'] // 100去掉日期的最后两位(日部分),得到YYYYMM格式的数字,再用%100取最后两位得到月份,和数字12比较即可。
内容的提问来源于stack exchange,提问作者Zeren
相关产品推荐
相关产品推荐

