gpt4 book ai didi

python - 如何连接列值在一定范围内的两个数据框?

转载 作者:IT老高 更新时间:2023-10-28 21:37:25 27 4
gpt4 key购买 nike

给定两个数据帧 df_1df_2,如何连接它们,使日期时间列 df_1 位于 start 之间> 和 end 在数据帧 df_2:

print df_1

timestamp A B
0 2016-05-14 10:54:33 0.020228 0.026572
1 2016-05-14 10:54:34 0.057780 0.175499
2 2016-05-14 10:54:35 0.098808 0.620986
3 2016-05-14 10:54:36 0.158789 1.014819
4 2016-05-14 10:54:39 0.038129 2.384590


print df_2

start end event
0 2016-05-14 10:54:31 2016-05-14 10:54:33 E1
1 2016-05-14 10:54:34 2016-05-14 10:54:37 E2
2 2016-05-14 10:54:38 2016-05-14 10:54:42 E3

获取对应的event,其中df1.timestampdf_2.startdf2.end之间<​​/p >

  timestamp              A          B          event
0 2016-05-14 10:54:33 0.020228 0.026572 E1
1 2016-05-14 10:54:34 0.057780 0.175499 E2
2 2016-05-14 10:54:35 0.098808 0.620986 E2
3 2016-05-14 10:54:36 0.158789 1.014819 E2
4 2016-05-14 10:54:39 0.038129 2.384590 E3

最佳答案

一个简单的解决方案是从 start 和 end 设置 closed = both 创建 interval index 然后使用 get_loc获取事件,即(希望所有日期时间都在时间戳 dtype 中)

df_2.index = pd.IntervalIndex.from_arrays(df_2['start'],df_2['end'],closed='both')
df_1['event'] = df_1['timestamp'].apply(lambda x : df_2.iloc[df_2.index.get_loc(x)]['event'])

输出:

            timestamp         A         B event0 2016-05-14 10:54:33  0.020228  0.026572    E11 2016-05-14 10:54:34  0.057780  0.175499    E22 2016-05-14 10:54:35  0.098808  0.620986    E23 2016-05-14 10:54:36  0.158789  1.014819    E24 2016-05-14 10:54:39  0.038129  2.384590    E3

关于python - 如何连接列值在一定范围内的两个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525786/

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