我正在使用pandas来清理数据库,我在2017年6月8日,2017年6月12日等数据框中列出了所有格式的日期。我想拉出日期距当前日期不到14天的所有行。感谢
答案 0 :(得分:3)
演示:
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