在Python中将两个时间序列与datetime索引的不同元素结合在一起

k3

time-series下面有两个df1具有DateTime包含日期而不包含时间格式的索引df2具有完整的日期时间索引,DateTime格式也是如此在完整数据中,df1df2行数要短得多

如您所见,这两个数据集的时间跨度为4月2日至6日。但是,df1会跳过某些日期,而在df2中,所有日期都可用。注意:在此示例中,仅跳过了奇数日期,但在完整数据中并非如此。

df1

    value1
date            
2016-04-02  16
2016-04-04  76
2016-04-06  23

df2

    value2
DateTime    
2016-04-02 07:45:00 257.96
2016-04-02 07:50:00 317.58
2016-04-02 07:55:00 333.39
2016-04-03 08:15:00 449.96
2016-04-03 08:20:00 466.42
2016-04-03 08:25:00 498.56
2016-04-04 08:10:00 454.73
2016-04-04 08:15:00 472.45
2016-04-04 08:20:00 489.85
2016-04-05 07:30:00 169.54
2016-04-05 07:35:00 276.13
2016-04-05 07:40:00 293.70
2016-04-06 07:10:00 108.05
2016-04-06 07:15:00 179.21
2016-04-06 07:20:00 201.80

我想按索引合并两个数据集。df1应该控制要保留的日期。预期的结果如下。

    value2  value1
DateTime    
2016-04-02 07:45:00 257.96  16
2016-04-02 07:50:00 317.58  16
2016-04-02 07:55:00 333.39  16
2016-04-04 08:10:00 454.73  76
2016-04-04 08:15:00 472.45  76
2016-04-04 08:20:00 489.85  76
2016-04-06 07:10:00 108.05  23
2016-04-06 07:15:00 179.21  23
2016-04-06 07:20:00 201.80  23

这是我的尝试。

result= pd.concat([df1, df1], axis=1, sort=True).dropna(how='all')

但是结果与我期望的不同。

耶斯列尔

在这里可以创建新的helper列,该列由日期时间填充,没有时间,使用DatetimeIndex.normalize

df2['date'] = df2.index.normalize()

或者,如果使用日期DatetimeIndex.date

df2['date'] = df2.index.date

然后使用merge默认的内部联接:

result= df1.merge(df2, left_index=True, right_on='date')
print (result)
                     value1  value2       date
DateTime                                      
2016-04-02 07:45:00      16  257.96 2016-04-02
2016-04-02 07:50:00      16  317.58 2016-04-02
2016-04-02 07:55:00      16  333.39 2016-04-02
2016-04-04 08:10:00      76  454.73 2016-04-04
2016-04-04 08:15:00      76  472.45 2016-04-04
2016-04-04 08:20:00      76  489.85 2016-04-04
2016-04-06 07:10:00      23  108.05 2016-04-06
2016-04-06 07:15:00      23  179.21 2016-04-06
2016-04-06 07:20:00      23  201.80 2016-04-06

或使用merge_asof,但它会与以前的匹配值合并,因此,仅当始终匹配日期时间而不df2使用dates from的时间时,才像上面一样工作df1

result= pd.merge_asof(df2, df1, left_index=True, right_index=True)
print (result)
                     value2  value1
DateTime                           
2016-04-02 07:45:00  257.96      16
2016-04-02 07:50:00  317.58      16
2016-04-02 07:55:00  333.39      16
2016-04-03 08:15:00  449.96      16
2016-04-03 08:20:00  466.42      16
2016-04-03 08:25:00  498.56      16
2016-04-04 08:10:00  454.73      76
2016-04-04 08:15:00  472.45      76
2016-04-04 08:20:00  489.85      76
2016-04-05 07:30:00  169.54      76
2016-04-05 07:35:00  276.13      76
2016-04-05 07:40:00  293.70      76
2016-04-06 07:10:00  108.05      23
2016-04-06 07:15:00  179.21      23
2016-04-06 07:20:00  201.80      23

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java android中将两个函数结合在一起

如何在Python中将两个具有相同索引的Series组合在一起?

在此Java代码中将Java中的两个方法结合在一起

如何在同一阵列中两个元素结合在一起?

如何将两个不同查询的结果与猫鼬结合在一起?

将具有共同元素的两个列表结合在一起-Scala

MySQL将两个结果结合在一起?

将两个 javascript 事件结合在一起不起作用

将两个输入字段的结果与JavaScript结合在一起?

将两个列表结合在一起

将两个功能结合在一起

如何将这两个查询结合在一起?(MySQL)

将两个嵌套的SELECT与DISTINCT结合在一起?

将两个FART替换脚本结合在一起

如何在MySQL中将两个不同的表组合在一起并对其进行排序

为什么尽管layout_gravity不同,但这两个元素仍然粘合在一起?

在SELECT中将两个列表组合在一起

将两个不同的表组合在一起进行查询

如何在熊猫中将布尔索引器与多索引结合在一起?

在PostgreSQL中将CTE与IN结合在一起

如何将两个下一个结合在一起

Python 以字母开头的行,将两个 for 循环组合在一起?

两个列表整数在python中组合在一起

将两个XPath表达式与公共前缀路径结合在一起?

golang如何将这两个功能结合在一起?

将两个单独的输入字段结合在一起使用php搜索

Python将每月和分钟数据帧与可识别TZ的日期时间索引结合在一起

Rails将两个数组与哈希结构结合在一起

如何在Django中将2个模型字段结合在一起?