python - 从 pandas 数据框中提取多年三个月系列(冬季)

标签 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) 并生成一个包含一系列冬季的新 DataFrame。 我发现了很多复杂的东西(例如,将 df.index.month 提取为新列,然后再解决这一列),但是有没有办法让冬季月份变得简单?

最佳答案

您可以使用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)]

关于python - 从 pandas 数据框中提取多年三个月系列(冬季),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963917/

相关文章:

javascript - 如何在python中使用真正的jquery从网页中提取数据?

用于匹配单行和多行注释的 Python 正则表达式。

mysql - 在 MySQL 上创建数据库索引的最佳方法

'LIKE' 搜索的 MYSQL 最佳索引

python - Pandas:更好的交叉连接方式?

python - 在测试用例(单元测试)中,无法捕获 Django pre_save 信号

python - Eclipse + 本地 CVS + PyDev

swift - 列出专辑标题时如何使用右侧的表格 View "index"?

python - Numpy for 循环每次都会给出不同的结果

python - 根据分组依据中的值数量来透视数据,而不是完整的透视