从熊猫数据框中提取多年三个月的系列(冬季)

时间:2015-06-21 11:18:18

标签: python indexing pandas time-series

我有一个包含70年小时数据的pandas DataFrame,如下所示:

                                    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

我想从每年中提取冬季月份(D-J-F)并生成一系列具有一系列冬季的新数据框架。 我发现了很多复杂的东西(比如将df.index.month作为一个新列提取出来,然后再将其添加到此列中),但是有没有办法让冬天几个月直截了当?

2 个答案:

答案 0 :(得分: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)]

答案 1 :(得分:1)

我刚发现

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

工作正常。