【问题标题】:Finding the min and max date from a timeseries range in pandas从 pandas 的时间序列范围中查找最小和最大日期
【发布时间】:2022-01-17 01:01:58
【问题描述】:

我有一个如下所示的数据框,其中包含站点名称和每个站点的日期范围。

Site       Date
Site_1     02/09/2011
Site_1     03/09/2011
Site_1     04/09/2011
Site_1     05/09/2011
Site_2     14/01/2010
Site_2     15/01/2010
Site_2     16/01/2010
Site_2     17/01/2010

我想找到每个站点的开始和结束日期,并像这样布置数据框:

Site       Start_Date     End_Date
Site_1     02/09/2011     04/09/2011
Site_2     14/01/2010     17/01/2010

我知道我可以像这样找到整个范围的最小值和最大值:

df['Date'].max()
df['Date'].min()

只是不确定将其分别应用于每个站点的最佳方法是什么。

【问题讨论】:

标签: python pandas time-series


【解决方案1】:

使用groupby+agg的高级语法可以直接得到你的自定义格式:

df.groupby('Site')['Date'].agg([('Start_Date', 'min'), ('End_Date', 'max')])

输出:

        Start_Date    End_Date
Site                          
Site_1  02/09/2011  05/09/2011
Site_2  14/01/2010  17/01/2010

【讨论】:

    【解决方案2】:

    我建议在“站点”列上使用groupby,并将每个组聚合为min 和max 日期。

    df.groupby("Site").agg({'date': ['min', 'max']})
    

    这将返回每个站点的 min 和 max 日期。

    我还没有尝试过代码,但它应该可以满足您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2021-10-26
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多