pandas - 如何根据时间合并两个数据框?
问题描述
试图合并到数据框。一是大,二是小。他们将日期时间设置为索引。我希望第二个(和行)的日期时间值合并在第一个日期时间值之间,按时间排序。
df1:
df1 = pd.read_csv(left_inputfile_to_read, decimal=".",sep=';', parse_dates = True, low_memory=False)
df1.columns = ['FLIGHT_ID','X', 'Y','MODE_C', 'SPEED', 'HEADING', 'TRK_ROCD', 'TIJD']
df1['datetime'] = pd.to_datetime(df1['TIJD'], infer_datetime_format = True, format="%Y-%M-%D %H:%M:%S")
df1.set_index(['datetime'], inplace=True)
print(df1)
FLIGHT_ID X Y MODE_C SPEED HEADING TRK_ROCD TIJD
datetime
2019-01-28 00:26:56 20034026 -13345 -1923 230.0 414 88 NaN 28-1-2019 00:26:56
2019-01-28 00:27:00 20034026 -13275 -1923 230.0 414 88 NaN 28-1-2019 00:27:00
2019-01-28 00:27:05 20034026 -13204 -1923 230.0 414 88 NaN 28-1-2019 00:27:05
2019-01-28 00:27:10 20034026 -13134 -1923 230.0 414 88 NaN 28-1-2019 00:27:10
2019-01-28 00:27:15 20034026 -13064 -1923 230.0 414 88 NaN 28-1-2019 00:27:15
... ... ... ... ... ... ... ... ...
2019-01-29 00:08:32 20035925 13443 -531 230.0 257 85 NaN 29-1-2019 00:08:32
2019-01-29 00:08:37 20035925 13487 -526 230.0 257 85 NaN 29-1-2019 00:08:37
2019-01-29 00:08:42 20035925 13530 -520 230.0 257 85 NaN 29-1-2019 00:08:42
2019-01-29 00:08:46 20035925 13574 -516 230.0 257 85 NaN 29-1-2019 00:08:46
2019-01-29 00:08:51 20035925 13617 -510 230.0 257 85 NaN 29-1-2019 00:08:51
551446 rows × 8 columns
df2:
df2 = pd.read_csv(right_inputfile_to_read, decimal=".",sep=';', parse_dates = True, low_memory=False)
df2['datetime'] = pd.to_datetime(df2['T_START'], infer_datetime_format = True, format="%Y-%M-%D %H:%M:%S" , dayfirst=True)
df2.set_index(['datetime'], inplace=True)
df2.drop(columns=['T_START', 'T_END', 'AIRFIELD'], inplace=True)
print(df2)
QNH MODE_C_CORRECTION
datetime
2019-01-28 02:14:00 1022 235
2019-01-28 02:14:00 1022 235
2019-01-28 02:16:00 1019 155
2019-01-28 02:21:00 1019 155
2019-01-28 02:36:00 1019 155
... ... ...
2019-01-28 21:56:00 1014 21
2019-01-28 22:56:00 1014 21
2019-01-28 23:26:00 1014 21
2019-01-28 23:29:00 1014 21
2019-01-28 23:52:00 1014 21
[69 rows x 2 columns]
这个想法是 df2 的第一行应该在 2019-01-28 02:14:00 的某个地方插入。我在 Stackoverflow 和 pandas 文档(合并、加入、连接)上花费了数小时,但找不到正确的解决方案。
下一步是根据该时间将“QNH”列中的值内插到 df1 中的行。
非常感谢任何帮助!
解决方案
只需连接两个 DataFrame 并按日期排序:
df = pd.concat([df1,df2]).sort_values(by='datetime')
对于下一步,您可以使用pandas.DataFrame.interpolate。
推荐阅读
- dam - 在 Razuna 中限制用户的磁盘空间
- python - 从终端全局运行 python 包
- google-apps-script - 气体谷歌驱动器
- swift - 如何从“ForEach”中只选择一个按钮?
- .net - 客户端启动通道但请求将来自服务器的两个 .NET 应用程序之间始终在线通信的最佳选择
- reactjs - 如何在反应中解构随 axios 请求而变化的数据
- arrays - Google Apps 脚本复制/粘贴过滤的数据集
- android - Android 中 websocket 的替代方案
- java - OpenLDAP- DirContextOperations.search((String name, String filter, SearchControls cons))
- python - Python 将用于中断循环的符号附加到列表中的最后一个元素