Pandas以秒数据帧的平均值合并



我有两个panda数据帧。

数据帧一有三列:

>td style="text-align:right;">07:00
name start_time
alice 04:00 05:00
bob 05:00

尝试:

#convert all time fields to datetime for merge_asof compatibility
df1["start_time"] = pd.to_datetime(df1["start_time"],format="%H:%M")
df1["end_time"] = pd.to_datetime(df1["end_time"],format="%H:%M")
df2["time"] = pd.to_datetime(df2["time"],format="%H:%M")
#merge both dataframes on time
merged = pd.merge_asof(df2, df1, left_on="time", right_on="start_time")
#groupy and get average for each name
output = merged.groupby(["name", "start_time", "end_time"],as_index=False).mean()
#convert time columns back to strings if needed
output["start_time"] = output["start_time"].dt.strftime("%H:%M")
output["end_time"] = output["end_time"].dt.strftime("%H:%M")
>>> output
name start_time end_time  points_1  points_2
0  alice      04:00    05:00       6.5  5.000000
1    bob      05:00    07:00       5.0  3.333333

最新更新