我有一个DataFrame(请参见下图),其每日值是我想要检索几个值的。我想检索:月平均值,月最小值,月最大值,年最小值,年数等。目前,我正在对DataFrame重新采样以检索这些值(请参见下面的代码),但是必须有更好的方法。
T_monthly=pd.DataFrame() # Create dataframe for monthly temperatures
T_monthly['Basse']=temp_basse.iloc[:,3].resample("M").mean() # Add Basse
T_monthly['Basse_min']=temp_basse.iloc[:,3].resample("M").min()
T_monthly['Basse_max']=temp_basse.iloc[:,3].resample("M").max()
T_monthly['Kedougou']=temp_kedougou.iloc[:,3].resample("M").mean() # Add Kedougou
T_monthly['Kedougou_min']=temp_kedougou.iloc[:,3].resample("M").min()
T_monthly['Kedougou_max']=temp_kedougou.iloc[:,3].resample("M").max()
T_yearly=pd.DataFrame() # Create dataframe for yearly temperatures
T_yearly['Basse_min']=temp_basse.iloc[:,3].resample("Y").min()
T_yearly['Basse_max']=temp_basse.iloc[:,3].resample("Y").max()
T_yearly['Kedougou_min']=temp_kedougou.iloc[:,3].resample("Y").min()
T_yearly['Kedougou_max']=temp_kedougou.iloc[:,3].resample("Y").max()
最好是我希望有一个可以输入日期的函数,例如2014,2(Y,M)并检索所有必要的值,而无需重新采样到新的DataFrames。例如:
输入:(2014年,2)
输出:[每月平均,每月最小值,每月最大值,每年最小值,每年最大值]
目前,我的函数使用了数据帧的索引号(请参见下文)。但是,如果要输入某个日期,我首先需要找到相应的索引号。
T_monthly.iloc[i, 3]
谢谢!
答案 0 :(得分:0)
在Sowjanya R Bhat提议之后又增加了两列,其中包含['year']和['month']
df['year'] = pd.DatetimeIndex(df['date']).year
df['month'] = pd.DatetimeIndex(df['date']).month
接下来通过以下方式选择数据:
df.loc[(df['year'] == year) & (df['month'] == month)].iloc[:,3]
并不是我想要的那样(基于索引),但是非常适合使用我编写的函数遍历数据。