这是我第一次发帖,所以我希望这有足够的文件来解释我所遇到的问题。
我正在处理25年多的NOAA风向和速度数据,我已经清理并加载到Pandas数据框中。我能够按月成功地对数据进行排序,使用以下方法将我的结果与每年的7月分开:
in: july_df = df[df['date'].str.contains('\d{4}\-(7|07)', regex=True)]
in: july_df.head(5)
Out:
date time direction speed
24732 1992-07-01 00:00 128.0 4.1
24733 1992-07-01 00:10 120.0 3.3
24734 1992-07-01 00:20 117.0 3.2
24735 1992-07-01 00:30 108.0 3.1
24736 1992-07-01 00:40 112.0 2.9
然而,当我试图进一步隔离数据时,只按每月7月份的数据进行分组,我从第一天开始就得到一些读数,这些读数的数量似乎根据数量而变化我想一次查看的条目。在这里,我试着在7月14日分组:
in: july_14 = july_df.groupby(df.date.str.contains("\d{4}\-07\-14", regex=True))
in: july_14.head(5)
out:
date time direction speed
24732 1992-07-01 00:00 128.0 4.1
24733 1992-07-01 00:10 120.0 3.3
24734 1992-07-01 00:20 117.0 3.2
24735 1992-07-01 00:30 108.0 3.1
24736 1992-07-01 00:40 112.0 2.9
26532 1992-07-14 00:00 91.0 4.3
26533 1992-07-14 00:10 82.0 4.2
26534 1992-07-14 00:20 78.0 4.6
26535 1992-07-14 00:30 73.0 4.6
26536 1992-07-14 00:40 71.0 4.2
我预计我之前的分组只输出与7月14日相关的结果,这是我想要更密切分析的日期。
我认为问题出在我正在使用的正则表达式中。例如,如果我将输入更改为不在数据集中的日期(7月32日),我仍会得到7月1日的结果:
in: july_14 = july_df.groupby(df.date.str.contains("\d{4}\-07\-32", regex=True))
in: july_14.head()
out:
date time direction speed
24732 1992-07-01 00:00 128.0 4.1
24733 1992-07-01 00:10 120.0 3.3
24734 1992-07-01 00:20 117.0 3.2
24735 1992-07-01 00:30 108.0 3.1
24736 1992-07-01 00:40 112.0 2.9
当我按年分组时,我甚至得到了这种不稳定的结果:
print july_df.groupby(july_df.date.str.contains("2001", regex=True)).head(5)
date time direction speed
24732 1992-07-01 00:00 128.0 4.1
24733 1992-07-01 00:10 120.0 3.3
24734 1992-07-01 00:20 117.0 3.2
24735 1992-07-01 00:30 108.0 3.1
24736 1992-07-01 00:40 112.0 2.9
374667 2001-07-01 00:00 96.0 4.7
374668 2001-07-01 00:10 98.0 5.1
374669 2001-07-01 00:20 100.0 5.4
374670 2001-07-01 00:30 97.0 5.3
374671 2001-07-01 00:40 83.0 5.1
有谁可以指出我的错误?
感谢您的帮助。如果记录不充分或重复问题,请告诉我。
答案 0 :(得分:0)
您可以尝试以下方法,首先过滤所需的日期,然后再分组
july_df[july_df['date'].str.contains('\d{4}-07-14')].groupby(['date','time']).agg(['count'])