如何根据时间合并两个数据帧?

布吕根工作

尝试合并到数据帧。第一个大,第二个小。他们将日期时间设置为索引。我想要的日期时间,第二个(和行)的值中的第一个,按时间排序的日期时间值之间的合并。

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

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章