Pandas日期时间数据框架



对于Python来说相对较新。我不认为这是重复的,因为我没有找到我想要的答案。

我有以下数据框架,包括datetime64格式的'Date'和以摄氏度为单位的平均温度为float64。我有18年(1990年至2018年)的每日记录,我应该收集18年中每一年的最高温度。

Date    Average Daily Value
0   1990-01-01  8.88330
1   1990-01-02  9.11045
2   1990-01-03  10.93545
3   1990-01-04  3.69165
4   1990-01-05  6.03955
... ... ...
10567   2018-12-27  6.20830
10568   2018-12-28  7.05420
10569   2018-12-29  2.68330
10570   2018-12-30  14.49580
10571   2018-12-31  4.74170
year = set(df['Date'].dt.year.to_list()); years = list(years)
years = [1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 
2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018]

我已经设法制作了一个年份列表,我希望用它来迭代数据,但我不确定如何。我尝试使用for循环,但它只是返回整个数据集的最高值,而不是每年。

任何帮助将是伟大的!谢谢。

您需要首先按年份分组,然后获取最大值:

的例子:

import numpy as np
import pandas as pd
df = pd.read_csv('test.csv', converters={'date': pd.to_datetime})
df['years'] = df['date'].dt.year
grouped_df = df.groupby('years')
max_temp = grouped_df.max('temp')
max_temp

带有测试集的输出:

temp
years   
2018     14
2019     12
2020     11