如何根据日期从数据框中提取值?

时间:2020-05-27 09:20:37

标签: python dataframe

我有一个DataFrame(请参见下图),其每日值是我想要检索几个值的。我想检索:月平均值,月最小值,月最大值,年最小值,年数等。目前,我正在对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]

谢谢!

1 个答案:

答案 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]

并不是我想要的那样(基于索引),但是非常适合使用我编写的函数遍历数据。