我有两个csv文件-
CSV A-
Timestamp Date/Time Error_1 Error_2
170:02:46:928 2023/01/01 16:45:11 APP_ERR Loss_of_Data
170:28:37:328 2023/01/01 17:11:04 APP_ERR SB_Data_Expiration
CSV B-
Timestamp Date/Time Error_1 Error_2 Error_3
170:02:46:928 2023/01/01 16:45:07 APP_ERR Loss_of_Data NO_ERROR
170:14:40:928 2023/01/01 16:45:10 APP_ERR Loss_of_Data Loss_of_Data
170:28:16:928 2023/01/01 17:10:44 APP_ERR Cnx_Attempt NO_ERROR
170:28:37:328 2023/01/01 17:11:04 APP_ERR SB_Data_Expiration ERROR
170:29:57:728 2023/01/01 17:11:04 APP_ERR PEB_due_to_overlimit Due_to_Over_SBI
170:32:59:978 2023/01/01 17:11:04 APP_ERR Cnx_Attempt NO_ERROR
170:33:40:778 2023/01/01 17:16:08 APP_ERR Cnx_Attempt NO_ERROR
我想比较CSV-A和CSV-B的日期/时间,如果日期/时间匹配或最接近的匹配,则读取Error_3列值。最终输出我想要类似于-
CSV A-
Timestamp Date/Time Error_1 Error_2 Error_3
170:02:46:928 2023/01/01 16:45:11 APP_ERR Loss_of_Data Loss_of_Data
170:28:37:328 2023/01/01 17:11:04 APP_ERR SB_Data_Expiration ERROR
CSV-A Date/Time(2023/01/01 16:45:11)的第一行在CSV-B中不匹配,这就是为什么我们检查最近的匹配,即“2023/01/01 16:45:10”(如果不完全匹配,通常会有1或2秒的差异)。第二行有三个完全匹配,但我们需要读取CSV-B Error_2 ='SB_Data_Expiration'的值。
谢谢你的帮助提前。
1条答案
按热度按时间amrnrhlw1#
使用
read_csv
和parse_dates
作为日期时间,然后传递给merge_asof
,参数为direction='nearest'
和tolerance
: