python – 匹配多个CSV文件中的多个元素
发布时间:2020-12-20 11:06:05 所属栏目:Python 来源:网络整理
导读:我有两个CSV文件,都包含日期和时间列. 对于EACH行,我需要在CSV 1和CSV 2中匹配时间和日期,并从CSV 2中提取天气. CSV 1: Date Time Value 2017/04/20 12:00 100 2017/03/20 12:00 250 2017/03/20 12:00 300 2017/02/20 12:00 80 2017/02/20 12:00 500 CSV 2
我有两个CSV文件,都包含日期和时间列.
对于EACH行,我需要在CSV 1和CSV 2中匹配时间和日期,并从CSV 2中提取天气. CSV 1: Date Time Value 2017/04/20 12:00 100 2017/03/20 12:00 250 2017/03/20 12:00 300 2017/02/20 12:00 80 2017/02/20 12:00 500 CSV 2: Date Time Weather 2017/02/20 12:00 Sunny 2017/02/20 12:00 Sunny 2017/03/20 12:00 Sunny 2017/03/20 12:00 Sunny 2017/04/20 12:00 Sunny 我不知道它是否有效,但我做的第一件事就是将CSV文件附加到两个python列表: list1 = [] list2 = [] for row in CSV1: list1.append(row) for row in CSV2: list2.append(row) 然后我对list1中的每一行,获取日期和类型,并立即循环遍历list2中的每一行,直到元素匹配. for row in list1: published_date = row[0] published_time = row[1] for rows in list2: if published_date == rows[0] and published_time == rows[1]: "do something with rows[2]" break 这样可行,但CSV1有1700行,CSV2有1.000.000行,因此这个过程需要150秒.有明显更快的方法吗? 我知道有一个元素必须匹配的解决方案,但这里是2,我无法调整单元素解决方案. 我是Stack Overflow的新手,所以如果我在这篇文章中做错了,请通知我. 解决方法
我建议您查看Python中的“pandas”库.它可以帮助您解决效率问题.我很好奇并在Pandas中实现了这个问题,我能够在373毫秒内使用一些虚拟数据来完成问题.
您可以使用以下代码来衡量框架的使用情况. # Generating some random samples import pandas as pd date_range = pd.date_range(start='2017-04-20',periods=1700) time_range = pd.to_datetime(pd.date_range('12:00',freq='1H',periods=1700).strftime('%H:%m')) values = np.arange(0,1700) weather = np.random.choice(['rain','sunny','windy'],size=1700,replace=True) # Putting the Random Data into a DataFrame df1 = pd.DataFrame({'Date':date_range,'Time':time_range,'Value':values}) df2 = pd.DataFrame({'Date':np.random.choice(date_range,size=1000000,replace=True),'Time': np.random.choice(time_range,'Weather':np.random.choice(weather,replace=True)}) # Mergind the Datatogther on the Date and Time Columns df3 = pd.merge(df1,df2,on=['Date','Time'],how='inner') df3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |