2015-06-21 72 views
1

我有包含70歲,每小時的數據的數據幀的大熊貓,看起來像這樣:提取多一年三月系列(冬季)從熊貓數據框中

        pressure 
2015-06-01 18:00:00     945.6 
2015-06-01 19:00:00     945.6 
2015-06-01 20:00:00     945.4 
2015-06-01 21:00:00     945.4 
2015-06-01 22:00:00     945.3 

我想提取冬季(DJF ),並生成一系列冬季的新DataFrame。 我發現了很多複雜的東西(例如提取​​作爲一個新的專欄,然後在後面加上這個專欄),但是有沒有辦法讓冬季月份變得簡單?

回答

1

您可以使用map()

import pandas as pd 

df = pd.DataFrame({'date' : [datetime.date(2015, 11, 1), datetime.date(2015, 12, 1), datetime.date(2015, 1, 1), datetime.date(2015, 2, 1)], 
        'pressure': [1,2,3,4]}) 
winter_months = [12, 1, 2] 
print df 

#   date pressure 
# 0 2015-11-01   1 
# 1 2015-12-01   2 
# 2 2015-01-01   3 
# 3 2015-02-01   4 

df = df[df["date"].map(lambda t: t.month in winter_months)] 
print df 

#   date pressure 
# 1 2015-12-01   2 
# 2 2015-01-01   3 
# 3 2015-02-01   4 

編輯:我注意到,在您的示例中的日期是數據幀的指數。這仍然有效:

df = df[df.index.map(lambda t: t.month in winter_months)] 
+0

感謝您的回答......問題在於此方法訪問「常規」數據列而不是索引。 – user3017048

+0

我剛剛編輯了我的答案,表明它也適用於索引,只需使用'df.index.map(winter_months中的lambda t:t.month)'代替。 – DeepSpace

+0

啊,對不起,我在編輯時寫下了我的評論,顯然......謝謝!另請參閱我剛剛發現的答案。 – user3017048

1

我剛剛發現

df[(df.index.month==12) | (df.index.month==1) | (df.index.month==2)] 

工作正常。