【问题标题】:Search for intervals of equal values in n time series在 n 个时间序列中搜索相等值的区间
【发布时间】:2020-02-13 17:03:15
【问题描述】:

我尝试搜索所有数据帧都保持相同值(例如 1)的时间间隔(例如 1 分钟)。

给定 n 个可能具有不同时间戳的时间序列(df1df2df3、...)。时间序列具有离散状态值 01。从这些跳转函数中,我想生成一个值永远不应大于 1 的序列。我想以某种方式对所有帧求和并应用 max(x, 1)。

import pandas as pd

df1 = pd.DataFrame({'2018-01-01 00:00:00': [1],
                    '2018-01-01 00:01:00': [0],
                    '2018-01-01 00:03:00': [0],
                    '2018-01-01 00:04:00': [1]})

df2 = pd.DataFrame({'2018-01-01 00:00:00': [0],
                    '2018-01-01 00:01:30': [1],
                    '2018-01-01 00:03:00': [0],
                    '2018-01-01 00:04:30': [1]})

df3 = pd.DataFrame({'2018-01-01 00:00:00': [1],
                    '2018-01-01 00:01:15': [1],
                    '2018-01-01 00:03:00': [0],
                    '2018-01-01 00:04:45': [0]})

frames = [df1, df2, df3]
result = pd.concat(frames)

print(df1.add(df2.add(df3,axis="index",fill_value=0),axis="index",fill_value=0))

中间结果:

[3 rows x 8 columns]
   2018-01-01 00:00:00  2018-01-01 00:01:00  2018-01-01 00:01:15  ...  2018-01-01 00:04:00  2018-01-01 00:04:30  2018-01-01 00:04:45
0                    2                  0.0                  1.0  ...                  1.0                  1.0                  0.0

我想有一种更舒适和直观的方式(concat、merge、join...)来做到这一点。我会把我的问题分成:

  1. 获得更多关于熊猫的知识:)
  2. 添加/求和数据帧/时间序列
  3. 让值 0 或 1
  4. 评估更改间隔的持续时间

【问题讨论】:

    标签: python pandas time-series


    【解决方案1】:

    IIUC,你可以用max

    pd.concat([df1,df2,df3], sort=False).max()
    

    或者如果您想按索引对齐数据框:

    pd.concat([df1,df2,df3], sort=False).groupby(level=0).max()
    

    输出:

       2018-01-01 00:00:00  2018-01-01 00:01:00  2018-01-01 00:03:00  \
    0                    1                  0.0                    0   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 2017-06-12
      相关资源
      最近更新 更多