2017-05-05 104 views
3

我正在使用熊貓來清理數據庫,並且我有一個格式如日期爲2017年6月12日,2017年6月12日等日期列表。我想抽出日期距離當前日期少於14天的所有行。感謝從python中的數據框中提取某些日期

+1

在'string'格式或'datetime' –

+1

日期你必須提供[MCVE]。 – IanS

+0

@IanS'Have'是一個強有力的詞...建議,因爲它有助於獲得更好的答案。 – Jblasco

回答

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