2013-06-12 105 views
11

一個熊貓數據幀我有使用熊貓read_csv從csv文件導入以下數據:濾波基於日期值

instrument   type from_date to_date 
0 96000001 W/D & V/L 19951227 19960102 
1 96000002 DEED TRUST 19951227 19960102 
2 96000003 WARNTY DEED 19951228 19960102 
3 96000004 DEED TRUST 19951228 19960102 
4 96000005 W/D & V/L 19951228 19960102 

我想選擇那些適合日期或日期範圍的行。例如,我想 只選擇from_date列中的日期爲19951227的那些行,或者選擇範圍爲的from_dateto_date19960102的日期。

我該怎麼做?

回答

8

選擇那些具有特定列:

In [11]: df[df['from_date'] == 19951227] 
Out[11]: 
    instrument  type from_date to_date 
0 96000001 W/D & V/L 19951227 19960102 
1 96000002 DEED TRUST 19951227 19960102 

或合併幾個查詢(可以使用|爲或)

In [12]: df[(19951227 <= df['from_date']) & (df['to_date'] <= 19960102)] 
Out[12]: 
    instrument   type from_date to_date 
0 96000001 W/D & V/L 19951227 19960102 
1 96000002 DEED TRUST 19951227 19960102 
2 96000003 WARNTY DEED 19951228 19960102 
3 96000004 DEED TRUST 19951228 19960102 
4 96000005 W/D & V/L 19951228 19960102 

值得注意的是,這些列不是日期時間/時間戳對象。 ..

要將這些列轉換爲時間戳,您可以使用:

In [21]: pd.to_datetime(df['from_date'].astype(str)) 
Out[21]: 
0 1995-12-27 00:00:00 
1 1995-12-27 00:00:00 
2 1995-12-28 00:00:00 
3 1995-12-28 00:00:00 
4 1995-12-28 00:00:00 
Name: from_date, dtype: datetime64[ns] 

In [22]: df['from_date'] = pd.to_datetime(df['from_date'].astype(str)) 

In [23]: pd.to_datetime(df['from_date'].astype(str)) # do same for to_date 

,並通過最新的字符串表示查詢:

In [24]: df['1995-12-27' == df['from_date']] 
Out[24]: 
    instrument  type   from_date to_date 
0 96000001 W/D & V/L 1995-12-27 00:00:00 19960102 
1 96000002 DEED TRUST 1995-12-27 00:00:00 19960102 
+8

安迪·海登,西部最快的槍。 –

+2

http://en.wikipedia.org/wiki/The_Typing_of_the_Dead –

+0

如何做類似於df ['1995-12-27'> = df ['from_date']&df ['1997-12-27'<= df ['從日期'] ] ? – Aidis