微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中从数据框中提取某些日期

我正在使用熊猫清理数据库,并且在数据框中有日期列表,所有日期的格式如2017年6月8日,2017年6月12日等.我想从日期中抽出日期少于14天的所有行.谢谢

解决方法:

演示:

In [118]: df = pd.DataFrame({'date': pd.date_range(end='2017-05-05', freq='9D', periods=20)}) \
                 .sample(frac=1).reset_index(drop=True)

In [119]: df
Out[119]:
         date
0  2016-11-15
1  2017-03-30
2  2017-01-17
3  2017-04-17
4  2017-03-12
5  2017-02-22
6  2017-01-08
7  2017-04-26
8  2017-05-05
9  2016-12-03
10 2017-03-03
11 2016-12-21
12 2017-02-04
13 2017-04-08
14 2017-03-21
15 2016-11-24
16 2017-01-26
17 2016-12-30
18 2017-02-13
19 2016-12-12

In [120]: df.loc[df.date > pd.datetime.Now() - pd.timedelta('14 days')]
Out[120]:
        date
7 2017-04-26
8 2017-05-05

相同的解决方案,但对于日期(作为字符串):

In [122]: df['dt_str'] = df.date.dt.strftime('%d-%b-%Y')

In [123]: df
Out[123]:
         date       dt_str
0  2016-11-15  15-Nov-2016
1  2017-03-30  30-Mar-2017
2  2017-01-17  17-Jan-2017
3  2017-04-17  17-Apr-2017
4  2017-03-12  12-Mar-2017
5  2017-02-22  22-Feb-2017
6  2017-01-08  08-Jan-2017
7  2017-04-26  26-Apr-2017
8  2017-05-05  05-May-2017
9  2016-12-03  03-Dec-2016
10 2017-03-03  03-Mar-2017
11 2016-12-21  21-Dec-2016
12 2017-02-04  04-Feb-2017
13 2017-04-08  08-Apr-2017
14 2017-03-21  21-Mar-2017
15 2016-11-24  24-Nov-2016
16 2017-01-26  26-Jan-2017
17 2016-12-30  30-Dec-2016
18 2017-02-13  13-Feb-2017
19 2016-12-12  12-Dec-2016

In [124]: df.loc[pd.to_datetime(df['dt_str'], errors='coerce') >= pd.datetime.Now() - pd.timedelta('14 days')]
Out[124]:
        date       dt_str
7 2017-04-26  26-Apr-2017
8 2017-05-05  05-May-2017

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐