gpt4 book ai didi

python - 在最近的时间戳上合并两个 Pandas 数据帧

转载 作者:太空狗 更新时间:2023-10-30 02:09:50 25 4
gpt4 key购买 nike

我有两个数据帧 df1 和 df2

df1 是

time                  status
2/2/2015 8.00 am on time
2/2/2015 9.00 am canceled
2/2/2015 10.30 am on time
2/2/2015 12.45 pm on time

df2是

 w_time                 temp
2/2/2015 8.00 am 45
2/2/2015 8.50 am 46
2/2/2015 9.40 am 47
2/2/2015 10.15 am 47
2/2/2015 10.35 am 48
2/2/2015 12.00 pm 48
2/2/2015 1.00 pm 49

现在我想合并两个数据帧,使第二个时间戳总是接近或等于第一个时间戳

结果应该是

time              status     w_time              temp

2/2/2015 8.00 am on time 2/2/2015 8.00 am 45

2/2/2015 9.00 am canceled 2/2/2015 8.50 am 46

2/2/2015 10.30 am on time 2/2/2015 10.35 am 48
2/2/2015 12.45 pm on time 2/2/2015 1.00 pm 49

最佳答案

首先确保日期列是 datetime64 列。

df1['time'] = pd.to_datetime(df1['time'].str.replace(".", ":"))
df2['w_time'] = pd.to_datetime(df2['w_time'].str.replace(".", ":"))

如果您将这些设置为 DatetimeIndex,则可以使用 reindex 和“最近”方法:

In [11]: df1 = df1.set_index("time")

In [12]: df2 = df2.set_index("w_time", drop=False)

In [13]: df1
Out[13]:
status
time
2015-02-02 08:00:00 on time
2015-02-02 09:00:00 canceled
2015-02-02 10:30:00 on time
2015-02-02 12:45:00 on time

In [14]: df2
Out[14]:
temp w_time
w_time
2015-02-02 08:00:00 45 2015-02-02 08:00:00
2015-02-02 08:50:00 46 2015-02-02 08:50:00
2015-02-02 09:40:00 47 2015-02-02 09:40:00
2015-02-02 10:15:00 47 2015-02-02 10:15:00
2015-02-02 10:35:00 48 2015-02-02 10:35:00
2015-02-02 12:00:00 48 2015-02-02 12:00:00
2015-02-02 13:00:00 49 2015-02-02 13:00:00

具有以下内容:

In [15]: df2.reindex(df1.index, method='nearest')
Out[15]:
temp w_time
time
2015-02-02 08:00:00 45 2015-02-02 08:00:00
2015-02-02 09:00:00 46 2015-02-02 08:50:00
2015-02-02 10:30:00 48 2015-02-02 10:35:00
2015-02-02 12:45:00 49 2015-02-02 13:00:00

然后将这些列添加/加入回 df1。

关于python - 在最近的时间戳上合并两个 Pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33491840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com