2014-09-28 33 views
2

獲得子集數據幀我有一個起始日期(DD/MM/YYYY)和金額以下的子集按日期

Start Date Amount 
1 01/01/2013  20 
2 02/05/2007  10 
3 01/05/2004  15 
4 01/06/2014  20 
5 17/08/2008  21 

我想創造這個數據幀只有在那裏開始日期的一個子集日是01:

Start Date Amount 
1 01/01/2013  20 
3 01/05/2004  15 
4 01/06/2014  20 

我試圖遍歷表並使用索引,但無法找到一個合適的方式來遍歷數據幀行。

回答

2

假設你的日期是日期時間已經那麼下面應該工作,如果他們是你可以使用to_datetime所以df['Start Date'] = pd.to_datetime(df['Start Date'])它們轉換字符串,你可能還需要在必要時通過PARAM dayfirst = True。如果您使用read_csv導入數據,則可以在導入時完成此操作,因此df = pd.read_csv('data.csv', parse_dates=[n], dayfirst=True)其中n是索引(當然是基於0的數據),因此如果它是第一個,則通過parse_dates=[0]

一種方法可能是一個lambda適用於列,並使用布爾指數回到這對指數:如果有一個內置的方法,不涉及此設置

In [19]: 

df[df['Start Date'].apply(lambda x: x.day == 1)] 
Out[19]: 
     Start Date Amount 
index     
1  2013-01-01  20 
3  2004-05-01  15 
4  2014-06-01  20 

不知道成爲將其轉換爲時間序列索引的索引。

+0

感謝您的回覆。開始日期是兩個單詞,數據是字符串,而不是日期時間,我如何將字符串轉換爲lambda表達式內的日期時間? – 2014-09-28 20:30:26

+0

您可以忽略列名稱中的不一致性,這只是我導入數據的方式。您可以並且應該將字符串轉換爲日期時間,就像'df ['Start Date'] = pd.to_datetime(df ['Start Date'])'您可能需要傳遞param'dayfirst = True',請參閱[docs]( http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html#pandas.to_datetime) – EdChum 2014-09-28 20:32:52