比较两个不同csv文件的日期时间

2024-06-02 11:48:49 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我基本上有两个csv文件:

(一)邮票.csv(800行)

[id (int64), start date (datetime64[ns]), end
date (datetime64[ns])] 

(二)数据.csv(36万行)[date time(datetime64[ns])]

中的所有条目邮票.csv具有唯一的开始日期和结束日期间隔。我在两个数据帧中加载了它们

df=pd.read_csv(Stamps.csv) 
df2=pd.read_csv(Data.csv)

并尝试根据日期时间字段将df2中的条目与df中的条目进行匹配;这样,如果df2中的“日期时间”值介于一个间隔之间,则将df中的id赋给它。 现在我试着这样做:

for index2, row2 in df2.iterrows(): #for every entry in the Data.csv
  for index, row in df.iterrows(): #for every entry in Stamp.csv
    if(row['StartDateTime']<=row2['Datetime']<=row['StopDateTime']): #if the date from Data.csv is between 2 intervals from Stamp.csv
        df2['JobRef']=row['JobRef'] #give the id from Stamp.csv to the entry from Data.csv
        break
df.to_csv(path_or_buf=path, sep=';', index=False)

我得到了想要的结果,但是它需要很长的时间来处理(第一次运行需要3个小时)。有没有什么办法能快点?你知道吗

另外,我也尝试了for循环的多线程处理,但执行起来还是花了很长时间。你知道吗


Tags: csvtheinfromiddffordata
1条回答
网友
1楼 · 发布于 2024-06-02 11:48:49

最后做了这件事,感谢chris dorn发布的答案:

import pandasql as ps

sqlcode = '''
select df2.*, df.JobRef
from df
inner join df2 
on df2.Datetime between df.StartDateTime and df.StopDateTime
'''
df2 = ps.sqldf(sqlcode,locals())

工作很快。你知道吗

相关问题 更多 >