python - 返回两个行值之间的值(伪时间序列?)

标签 python pandas dataframe

我在这里尝试但失败了。我想做的就是从此数据框中获取“Time_of_Event”值:

events_data = {'Time_of_Event':[8, 22, 24,34,61,62,73,79,86]}
my_events_df = pd.DataFrame(events_data)

并根据此数据帧的“Job_Start_Times”进行搜索:

job_data = {'Job_Start_Time':[20,50,75], 'Job_Name':['Job_01','Job_02','Job_03']}
my_jobs_df = pd.DataFrame(job_data)

找到它属于哪个范围,然后将“Job_Name”返回/附加到我的第一个“my_events_df”数据帧。

例如,对于“Time_of_Event”中的值8,我想返回“Job_01”。对于值 61,我想返回“Job_02”,因为 61 介于 50 和 75 之间。

我尝试了一些for循环、if-else,但没有取得太大进展。如有任何帮助,我们将不胜感激!

最佳答案

我们可以尝试使用 pd.merge_asof

new_df = (pd.merge_asof(my_events_df.sort_values('Time_of_Event'),
                        my_jobs_df, left_on='Time_of_Event',
                        right_on = 'Job_Start_Time',
                        direction = 'backward')
  .drop(columns = 'Job_Start_Time')
  .bfill())
print(new_df)
   Time_of_Event Job_Name
0              8   Job_01
1             22   Job_01
2             24   Job_01
3             34   Job_01
4             61   Job_02
5             62   Job_02
6             73   Job_02
7             79   Job_03
8             86   Job_03

关于python - 返回两个行值之间的值(伪时间序列?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60128552/

相关文章:

python - 如何根据 id 外部合并 3 个或更多数据集并使用一列进行比较?

Python:如何确定无序元组列表是否在 dictionaries.values() 中?

python - 如何使用 pool.starmap 和 zip 组合并传递带有单个元素的整个列表

python - Pandas 函数基于单列创建多列

python - Pandas 滚动值

Python - iterrows 的替代解决方案

r - 仅对最后一个值插入 NA

python - 将数据帧值与字典中的键范围进行比较并返回值

python - 编写 NBConvert 脚本以输出到多个 HTML 文件

python - 描述Python Pandas模块中的函数