gpt4 book ai didi

python - Pandas - 将两个数据帧中最近的事件与条件连接起来

转载 作者:行者123 更新时间:2023-12-04 09:15:32 28 4
gpt4 key购买 nike

我需要帮助。我陷入了一个问题。
我有以下 DF
DF1

DATETIME           ID       State

2020-07-29 00:15:10 A Down
2020-07-29 00:25:10 B Down
2020-07-29 01:14:30 A Down
2020-07-29 02:15:50 A Down
DF2
DATETIME            ID      State

2020-07-29 00:19:40 A Up
2020-07-29 00:35:10 B Up
2020-07-29 00:56:40 B Up
2020-07-29 01:40:30 A Up
2020-07-29 01:35:10 B Up
2020-07-29 02:18:50 A Up
2020-07-29 02:45:50 A Up
我想要以下结果:
新东风
DATETIME             ID     State   Restore_DT
2020-07-29 00:15:10 A Down 2020-07-29 00:19:40
2020-07-29 00:25:10 B Down 2020-07-29 00:35:10
2020-07-29 01:14:30 A Down 2020-07-29 01:40:30
2020-07-29 02:15:50 A Down 2020-07-29 02:18:50
从理论上讲,我需要从 DF1 中找到 DF2 中最近的具有相同 ID 的事件。
最好的方法是什么?
谢谢

最佳答案

使用 merge_asof direction='nearest'参数,也首先对列进行排序并通过 DataFrame.assign 创建新列:

df1['DATETIME'] = pd.to_datetime(df1['DATETIME'])
df2['DATETIME'] = pd.to_datetime(df2['DATETIME'])

df1 = df1.sort_values('DATETIME')
df2 = df2.sort_values('DATETIME')

df = pd.merge_asof(df1,
df2[['DATETIME','ID']].assign(Restore_DT = df2['DATETIME']),
on='DATETIME',
by='ID',
direction='nearest')
print (df)
DATETIME ID State Restore_DT
0 2020-07-29 00:15:10 A Down 2020-07-29 00:19:40
1 2020-07-29 00:25:10 B Down 2020-07-29 00:35:10
2 2020-07-29 01:14:30 A Down 2020-07-29 01:40:30
3 2020-07-29 02:15:50 A Down 2020-07-29 02:18:50

关于python - Pandas - 将两个数据帧中最近的事件与条件连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63240319/

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