python - 如何检查熊猫数据框列中的年份是否为闰年 - Python
问题描述
我有一个看起来像这样的数据集:
DOB DOB_year
0 1964-01-06 1964
1 1984-01-13 1984
2 1992-01-20 1992
3 1972-01-27 1972
4 2001-02-03 2001
5 2011-02-10 2011
6 1950-02-17 1950
7 1968-02-24 1968
[318495 rows x 2 columns]
我想要一个像这样的输出:
DOB DOB_year is_leap
0 1964-01-06 1964 TRUE
1 1983-01-13 1984 FALSE
2 1992-01-20 1992 TRUE
3 1972-01-27 1972 TRUE
4 2001-02-03 2001 FALSE
5 2011-02-10 2011 FALSE
6 1950-02-17 1950 FALSE
7 1968-02-24 1968 TRUE
下面是代码:
def is_leapCheck(s):
return (s.dt.year % 4 == 0) & ((s.dt.year % 100 != 0) | (s.dt.year % 400 == 0)) & (s.dt.month == 2) & (s.dt.day == 29)
dob_df['is_leap']=is_leapCheck(pd.to_datetime(dob_df['year']))
代码的输出将所有 the_leap 值都设为 FALSE,而根本没有 TRUE 值。我不确定我在哪里出错了。任何帮助表示赞赏
解决方案
您可以calendar
在以下(玩具)示例中使用该模块:
import calendar
import pandas as pd
frame = pd.DataFrame(data=[2012], columns=['year'])
frame['is_leap'] = frame['year'].apply(lambda e: calendar.isleap(e))
print(frame)
输出
year is_leap
0 2012 True
推荐阅读
- python - Django - 迁移不起作用和奇怪的错误
- database - 文档中的 Mongoose 更新数组无法按预期工作
- ruby-on-rails - Ruby on Rails:控制台/.rb 文件中的行为之间的差异
- image - 去除精子细胞尾部的污渍
- shell - 用于在远程服务器中推送和解压缩文件的脚本
- bitbucket - 如何让 codecov.io 将覆盖率报告发布到 bitbucket 拉取请求评论
- python - 与终端尺寸相关的更新窗口
- javascript - Javascript 函数在 Chrome 和 Internet Explorer 中返回不同的请求正文
- android - 在 OpenGL ES 2.0 中垂直重复像素
- excel - 比较 VBA 中的两组日期