2017-09-27 100 views
0

我一直在試圖篩選具體日期我的數據幀,雖然日期是存在於數據幀,但它不返回任何結果如何基於與精確匹配

數據的日期值過濾大熊貓數據幀在數據幀中基於查詢

df[df['Date'] > '2017-03-20'] 

回報這導致

StaffID  Date   
90047 2017-03-20 19:00:00  
90049 2017-03-20 19:00:00  
90049 2017-03-27 19:00:00  

雖然當我運行此查詢

df[df['Date'] == '2017-03-20'] 

df.loc[df['Date'] == '2017-03-20'] 

返回我沒有任何結果都只是一個空的數據幀

StaffID  Date 

我的數據幀列類型

StaffID    int64 
Date   datetime64[ns] 

,我曾嘗試以上查詢通過比較數據幀的日期和字符串以及轉換字符串日期datetime64 [NS]還是一樣的結果,請將不勝感激

+2

add'df.Date = df.Date.dt.date',在過濾前 – Wen

+0

仍然是相同的結果 – Waqar

+0

@Waqar因爲'2017-03-20'被當作'2017-03-20 00:00: 00'明顯小於'19:00:00',所以你需要按照Wen的說法過濾日期。 –

回答

0

你可以做字符串比較,然後

df[df['Date'].astype(str).str[:10] == '2017-03-20'] 


    StaffID Date 
0 90047 2017-03-20 19:00:00 
1 90049 2017-03-20 19:00:00 
0

使用dt.date astype字符串比較即

df[df['Date'].dt.date.astype(str) == '2017-03-20'] 
任何幫助

輸出:

 
    StaffID    Date 
0 90047 2017-03-20 19:00:00 
1 90049 2017-03-20 19:00:00 
0

我當時使用的日期是'2017-03-20 19:00:00'這是>'2017-03-20 00:00:00'這就是爲什麼它沒有比較它的權利做到這一點最好的辦法是

df.Date = df.Date.dt.date 
dateToMatch = np.datetime64('2017-03-20') 
df[df.Date == dateToMath] 

上面的代碼返回

StaffID  Date 
0 90047 2017-03-20 
1 90049 2017-03-20 

這樣只會從我的日期列中提取日期和替換舊列其中來得及

來源:文誰回答我在發表評論。