【问题标题】:Split a series on time gaps in pandas?拆分熊猫的一系列时间间隔?
【发布时间】:2021-09-03 23:54:36
【问题描述】:

是否可以根据间隔拆分时间序列。例如,假设我们有以下内容:

rng2011 = pd.date_range('1/1/2011', periods=72, freq='H')
rng2012 = pd.date_range('1/1/2012', periods=72, freq='H')
Y = rng2011.union(rng2012)

是否可以寻找一年或更长时间的差距,并在其上拆分数据框?

我想这会是这样的:

Y.groupby(Y.map(lambda x: x.year))

除了这在年份日期拆分,我有兴趣指定间隔间隙而不是行的年份属性。

该应用程序是我从 GPS 获得的旅行日志,但没有描述一次旅行何时结束,另一次旅行何时开始。我想间隔十分钟或更长时间。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    假设 Y 是数据框中的一列,一种方法是使用 diff 和 cumsum:

    df = DataFrame(Y)
    df[1] = df[0].diff() > 600000000000.0 #nanoseconds in ten minutes
    df[1] = df[1].cumsum()
    df.groupby(1)
    

    注意:如果您使用 72 小时内的纳秒数,它将分为两组。

    【讨论】:

    • 谢谢,效果很好!你也可以用 Y 作为索引做同样的事情吗?
    • 这适用于 0.10.0 吗? col 1 包含我系统上的范围 0..143。
    • @crewbum 那是因为数据集是按小时分隔的(所以它们都分裂了......)!
    • diff 现在在 pandas master 中返回 timedelta 对象。
    • 您也可以使用 datetime.timedelta 以更大的单位表示差距:df[1] = df[0].diff() > timedelta(minutes=10)
    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2021-05-07
    • 2021-12-01
    • 1970-01-01
    • 2022-01-07
    • 2014-02-19
    相关资源
    最近更新 更多