Python-Pandas-合并两个具有不同时间戳频率的数据帧

Python-Pandas-合并两个具有不同时间戳频率的数据帧,python,pandas,dataframe,merge,timestamp,Python,Pandas,Dataframe,Merge,Timestamp,我有两个数据帧: -第一个有一个带有第二个或亚秒时间步长的时间戳列, -第二个有一个带有1分钟时间步长的timestamp列 现在很明显,如果数据时间间隔相同,两个数据帧的大小将不同,因为它们的数据频率不同 我希望使用更高频率(即最长)的数据帧将它们合并到一个数据帧中,并将另一个数据帧(水平)放在其旁边,以获得当前时间戳的正确数据。这意味着最低频率的数据帧数据将根据当前分钟数据值进行重复 我希望下面的例子能让事情变得更清楚: 数据帧1 |--------------------------|--

我有两个数据帧: -第一个有一个带有第二个或亚秒时间步长的时间戳列, -第二个有一个带有1分钟时间步长的timestamp列

现在很明显,如果数据时间间隔相同,两个数据帧的大小将不同,因为它们的数据频率不同

我希望使用更高频率(即最长)的数据帧将它们合并到一个数据帧中,并将另一个数据帧(水平)放在其旁边,以获得当前时间戳的正确数据。这意味着最低频率的数据帧数据将根据当前分钟数据值进行重复

我希望下面的例子能让事情变得更清楚:

数据帧1

|--------------------------|------------------|
|        datetime          |     ValueDF1     |
|--------------------------|------------------|
| 2019-12-11 12:00:16.599  |       1          |
|--------------------------|------------------|
| 2019-12-11 12:00:16.17   |       2          |
|--------------------------|------------------|
| 2019-12-11 12:00:17.11   |       3          |
|--------------------------|------------------|
数据帧2

|--------------------------|------------------|
|        datetime          |     ValueDF2     |
|--------------------------|------------------|
| 2019-12-11 12:00         |       4          |
|--------------------------|------------------|
合并

|--------------------------|------------------|-----------------|
|        datetime          |     ValueDF1     |    ValueDF2     |
|--------------------------|------------------|-----------------|
| 2019-12-11 12:00:16.599  |       1          |        4        |    
|--------------------------|------------------|-----------------|
| 2019-12-11 12:00:16.17   |       2          |        4        |
|--------------------------|------------------|-----------------|
| 2019-12-11 12:00:17.11   |       3          |        4        |
|--------------------------|------------------|-----------------|

有什么建议吗?提前感谢。

假设“datetime”列都是datetime格式,我们可以将df1[“datetime”]从秒数中去掉,并使用此新字段进行合并

df1['datetime_min'] = pd.to_datetime([dt.datetime.strftime(d, "%Y-%m-%d %H:%M") for d in df1["datetime"]])

df1.merge(df2,left_on='datetime_min', right_on='datetime', how='left')

这对您有用吗?

您是否检查了
pd.merge\u asof()
。希望这有助于:

pd.merge_asof(df1.sort_values('datetime'), df2.sort_values('datetime'))
输出:

                 datetime  ValueDF1  ValueDF2
0 2019-12-11 12:00:16.170         2         4
1 2019-12-11 12:00:16.599         1         4
2 2019-12-11 12:00:17.110         3         4