【问题标题】:R merge two different time series with same dateR合并两个具有相同日期的不同时间序列
【发布时间】:2014-11-07 01:23:06
【问题描述】:

我有包含数据的 csv 文件。 Link is here. 2013 年的时间序列粒度为 5 分钟。但是,某些时间戳缺少值。

我想为缺少的时间戳创建一个间隔为 5 分钟且值为 0 的时间序列。

请告知如何在 Pandas 或 Python 中执行此操作

【问题讨论】:

  • 您想要在 pandas 或 R 中找到解决方案吗?这是要明确的第一件事。
  • 两种解决方案都可以
  • 好的,如果您想获得有用的回复,您需要执行以下操作:1)在问题的前期非常清楚,2)正确标记此问题,3)包括复制/粘贴人们可以用来弄乱您的数据的示例。不必是所有数据 - 只是展示概念所需的最低数量
  • 保罗,我想我已经按照你的要求做了。我确实提到过“如何使用 zoo 或 Python-Pandas 合并 TS1 和 TS2?”我的表格是复制/粘贴示例。请让我知道,如果有什么遗漏。谢谢
  • 并非如此。您主要发布了不是很有用的输出,并且您的标签没有提到 python、R 或 zoo(我将添加它们)。请参阅我的回复,了解一个独立的、可复制粘贴的示例。

标签: python r pandas merge zoo


【解决方案1】:

在 pandas 中,您只需加入索引:

from io import StringIO

import numpy as np
import pandas

ts1_string = StringIO("""\
V1,V2
01/01/2013 00:05:00,10
01/01/2013 00:10:00,6
01/01/2013 00:15:00,10
01/01/2013 00:25:00,8
01/01/2013 00:30:00,11
01/01/2013 00:35:00,7""")

ts2_string = StringIO("""
V1,V2
2013-01-01 00:00:00,0
2013-01-01 00:05:00,0
2013-01-01 00:10:00,0
2013-01-01 00:15:00,0
2013-01-01 00:20:00,0
2013-01-01 00:25:00,0""")

ts1 = pandas.read_csv(ts1_string, parse_dates=True, index_col='V1')
ts2 = pandas.read_csv(ts2_string, parse_dates=True, index_col='V1')

# here's where the join happens
# (suffixes deal with overlapping column names)
ts_joined = ts1.join(ts2, rsuffix='_ts1', lsuffix='_ts2')

# and finally
print(ts_joined.head())

这给出了:

                     V2_ts2  V2_ts1
V1                                 
2013-01-01 00:05:00      10       0
2013-01-01 00:10:00       6       0
2013-01-01 00:15:00      10       0
2013-01-01 00:25:00       8       0
2013-01-01 00:30:00      11     NaN

【讨论】:

  • 嗨,保罗,谢谢您的回答。你能用TS1和TS2吗?您已经生成了随机数。但是我已经有了TS1。我认为问题在于 TS1 和 TS2 中的日期时间语法。
  • 你能提供一些代码来生成你的 TS1 和 TS2 吗? (@钱德拉)
  • @Chandra 怎么样?一般来说,人们只愿意在解决问题时少做一些工作。
  • 将 TS1 复制到 "TS1.csv" 文件和 python 中 -- dat=pd.read_csv("TS1.csv") index = pd.DatetimeIndex(start='2013-01-01 00: 00', end='2014-01-01 00:00', freq='5 min') df=pd.DataFrame(index=index) TS1.to_csv("Q1.csv",date_format="%d/% m/%Y %H:%M:%S") df.to_csv("Q2.csv",date_format="%Y/%m/%d %H:%M:%S")df=pd.DataFrame (索引=索引)
  • @Chandra 应该是你的问题! (删除您的评论)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
相关资源
最近更新 更多