【问题标题】:How to group date by day and find min and max value in pandas data frame or python如何按天分组日期并在熊猫数据框或python中查找最小值和最大值
【发布时间】:2020-04-10 17:55:46
【问题描述】:

Two event columns dtb(start time) dte(stop time)

在图像中的两列中,我希望按天分组获取 min(time) 作为当天事件的开始,并将 max(time) 作为当天事件的停止。I want like this

【问题讨论】:

  • 欢迎来到 SO!请阅读有关how to ask 的指南:stackoverflow.com/help/how-to-ask。然后编辑您的帖子并提供更多信息,例如您已经尝试过的内容和/或代码。我们正在帮助您解决您在申请过程中遇到的问题,但我们不会为您编写程序。

标签: python pandas datetime max min


【解决方案1】:

您甚至可以使用以下语法直接每天或每周分组

dg_bydate= df.groupby(pd.Grouper(key='dtb', freq='1D')).agg({'dte':[np.min, np.max]})

【讨论】:

    【解决方案2】:

    我会尽量按照我的理解来回答。

    假设您的列dtbdte 采用datetime 格式:

    df['date'] = df.dtb.dt.date
    df['dtb'] = df.dtb.dt.time
    df['dte'] = df.dte.dt.time
    
    result = df.groupby('date').agg({'dtb': np.max,
                                    'dte': np.min})
    print(result)
    

    我所做的是创建一个包含日期的新列,并重新格式化 dtbdte 列以仅获取时间,然后按日期分组,获取 dtb 和 @987654328 的最大值和最小值@

    【讨论】:

    • 是的,您的理解是正确的。但现在我收到了这个错误:类型错误:“系列”对象是可变的,因此它们不能被散列
    • 好的,现在我测试了答案,检查编辑。我所做的是假设在每一行中,开始和结束的日期都相同。所以创建一个带有日期的新列,然后重新格式化开始和结束的时间
    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2020-10-22
    相关资源
    最近更新 更多