python - 根据日期时间索引合并两个数据框(不同大小)
问题描述
我有两个数据框,比如说,形状为 (2000*4) 的 df_1 和形状为 (69*4) 的 df_2。df_1 的数据在 2000 分钟内每分钟可用,但是 df_2 的数据仅在特定分钟内可用(69 个数据点分布在 2000 分钟内)。我想根据 DateTime 索引合并它们,这样我就得到了一个形状为 (2000*8) 的最终数据框。
df_1
Datetime X1 X2 X3 X4
15/1/2020 08:01:00 1 2 3 4
15/1/2020 08:02:00 5 6 7 8
15/1/2020 08:03:00 9 10 11 12
15/1/2020 08:04:00 13 14 15 16
.
.
15/1/2020 23:59:00 17 18 19 20
df_2
Datetime Y1 Y2 Y3 Y4
15/1/2020 08:01:00 A B C D
15/1/2020 09:30:00 E F G H
15/1/2020 15:03:00 I J K L
15/1/2020 18:04:00
.
.
15/1/2020 23:59:00 M N O p
输出
Datetime X1 X2 X3 X4 Y1 Y2 Y3 Y4
15/1/2020 08:01:00 1 2 3 4 A B C D
15/1/2020 08:02:00 5 6 7 8 Nan Nan Nan NAn
15/1/2020 08:03:00 9 10 11 12 Nan Nan Nan nan
15/1/2020 08:04:00
15/1/2020 09:30:00
15/1/2020 15:03:00
15/1/2020 18:04:00
.
.
15/1/2020 23:59:00 17 18 19 20 M N O p
解决方案
您可以执行联接或concat
. 由于join
在评论中,我将使用pd.concat()
:
final_df = pd.concat([df_1,df_2],axis=1,join='outer')
这是一个例子:
import pandas as pd
df1 = pd.DataFrame({'index':['A','B','C','D','E','F'],"A":[1,2,3,4,5,6]}).set_index('index')
df2 = pd.DataFrame({'index':['B','D','F'],"B":[20,30,40]}).set_index('index')
df_output = pd.concat([df1,df2],axis=1,join='outer')
输出:
A B
A 1 NaN
B 2 20.0
C 3 NaN
D 4 30.0
E 5 NaN
F 6 40.0
推荐阅读
- python - 如何将二元分类的决策树转换为多标签分类的决策树?
- javascript - 将数据推送到数组后更新 Sate 时,React 功能组件未呈现
- c++ - 如何将分段错误中的信息映射到源代码中的行?
- database-administration - greenplum 的 gp_dump 实用程序不可用
- eclipse - 不可解析的 POM 导致 Maven 构建,安装失败
- python - 使用 kotlin 在 intellij 中运行 python 脚本
- typescript - 打字稿使参数可选
- python - 如何在 Python 中在一个 USB 设备上播放音频并同时在另一个 USB 设备上录制音频?
- python - python tkinter 弹跳球游戏
- excel - 如何在VBA中创建一个文件夹并将一个txt文件放入其中