python - 比较两个数据帧
问题描述
我有 2 个不同的数据框
DF1
ID Datetime Event
1 07:51 XX
2 08:50 XY
3 09:01 XZ
DF2
ID Datetime Value
1 07:55 AB
2 08:54 BC
3 09:05 CD
我需要比较 2 个数据帧之间的 ID,然后 DF1 的日期时间将小于 DF2,然后应该出现事件列。
DF2
ID Datetime Value Event
1 07:55 AB XX
2 08:54 BC XY
3 09:05 CD XZ
解决方案
如果我理解您的问题,您想合并两个数据框并将 datetime 更高的 datetime 列。你可以这样做如下
创建用于测试的虚拟数据
import pandas as pd
raw_data = {
"ids": range(1,6),
"datetime": ["7:55", "9:20", "8:11", "7:30", "11:25"],
"events": ["E11","E12", "E13", "E14", "E15"]
}
df1=pd.DataFrame(raw_data)
df1["datetime"]=pd.to_datetime(df1["datetime"], format="%H:%M")
display(df1)
raw_data = {
"ids": range(1,5),
"datetime": ["7:45", "9:30", "8:41", "7:20"],
"values": ["E21","E22", "E23", "E24"]
}
df2=pd.DataFrame(raw_data)
df2["datetime"]=pd.to_datetime(df2["datetime"], format="%H:%M")
display(df2)
合并
merged_df = pd.merge(df1, df2, on="ids", how="inner")
merged_df["datetime"] = merged_df["datetime_x"].where(merged_df["datetime_x"]>=merged_df["datetime_y"],
merged_df["datetime_y"])
display(merged_df)
merged_df.set_index("ids").reindex(columns=["datetime", "values", "events"])
推荐阅读
- cordova - 带有固定导航栏和工具栏的 Cordova Overscroll
- html - 如何防止所选文本中重叠行高变暗
- python - 根据汇率django更改价格字段
- javascript - 将按钮添加到我的 React Native 应用程序时出现一些错误?
- nginx - Nginx 入口资源 - 从 www 重定向(SSL 不起作用)
- intranet - 通过笔记本电脑集成 AWS Device Farm 和 Intranet
- google-apps-script - 脚本大量使用方法 Range.getValue
- java - Java,无限 if 语句
- java - 我正在尝试创建一个动态表,但是当我午餐应用程序时它就崩溃了
- powershell - 以本地管理员身份从另一个 powershell 脚本调用 powershell 脚本