Python 在特定条件下连接两个CSV文件或数据帧
好吧,我似乎找不到解决办法,所以这是我的问题。如果stackoverflow社区的人能尽快提出解决方案,我将不胜感激,因为我必须提交结果 我有两个csv文件(可以作为数据帧加载)。一个csv文件有1458644行和12列,其中所有行条目都指定了事件,持续时间为6个月,最短为几秒钟 另一个包含天气数据的csv文件有4432个条目,每天的天气数据以6个月的小时(此处无秒持续时间)指定 我想做的是使用一些pythonic操作(或与条件连接)组合这两个文件的条目,以便将第二个数据帧的hour条目中的数据添加到第一个数据帧中,但添加一个小时的条目(在第二个数据帧中指定)在第一个数据帧的一个小时内进行复制和重复 e、 g 第一数据帧Python 在特定条件下连接两个CSV文件或数据帧,python,pandas,dataframe,duplicates,concatenation,Python,Pandas,Dataframe,Duplicates,Concatenation,好吧,我似乎找不到解决办法,所以这是我的问题。如果stackoverflow社区的人能尽快提出解决方案,我将不胜感激,因为我必须提交结果 我有两个csv文件(可以作为数据帧加载)。一个csv文件有1458644行和12列,其中所有行条目都指定了事件,持续时间为6个月,最短为几秒钟 另一个包含天气数据的csv文件有4432个条目,每天的天气数据以6个月的小时(此处无秒持续时间)指定 我想做的是使用一些pythonic操作(或与条件连接)组合这两个文件的条目,以便将第二个数据帧的hour条目中的数据
Date: col1, cl2,
1/2/2013 12:05:00 yyy etc.
1/2/2013 12:12:00 yyy
1/2/2013 13:13:00 yyy
1/2/2013 14:14:00 yyy
1/2/2013 14:30:00 yyy
1/2/2013 14:45:00 yyy
1/2/2013 17:00:00 yyy
1/2/2013 17:17:00 yyy
1/2/2013 17:30:00 yyy
1/2/2013 18:17:00 yyy
1/2/2013 18:30:00 yyy
第二数据帧
Date col3 col4
1/2/2013 12:00:00 xxx overcast
1/2/2013 13:00:00 xxx overcast
1/2/2013 14:00:00 xxx sunny
1/2/2013 15:00:00 xxx sunny
1/2/2013 16:00:00 xxx rain
1/2/2013 17:00:00 xxx rain
1/2/2013 18:00:00 xxx cloudy
最终结果应如下所示:
Date: col1, col2, col3, col4
1/2/2013 12:05:00 yyy etc. xxx overcast
1/2/2013 12:12:00 yyy xxx overcast
1/2/2013 13:13:00 yyy xxx overcast
1/2/2013 14:14:00 yyy xxx sunny
1/2/2013 14:30:00 yyy xxx sunny
1/2/2013 14:45:00 yyy xxx sunny
1/2/2013 17:00:00 yyy xxx rain
1/2/2013 17:17:00 yyy xxx rain
1/2/2013 17:30:00 yyy xxx rain
1/2/2013 18:17:00 yyy xxx cloudy
1/2/2013 18:30:00 yyy xxx cloudy
如果我们转换为适当的日期时间,这相当简单:
df1['Date'] = pd.to_datetime(df1['Date'])
df2['Date'] = pd.to_datetime(df2['Date'])
df1['Hour'] = pd.DatetimeIndex(df1['Date']).floor('h')
combined = df1.merge(df2, left_on='Hour', right_on='Date', how='left',
suffixes=('', '_r'))
combined.drop(['Hour', 'Date_r'], axis=1, inplace=True)
那么对于frame1中的每个记录/行,您在frame2中查找相同的小时数,以及它的列?在1和2之间有不同数量的匹配。该死,谢谢你,伙计,这就像一个符咒。此外,组合文件中似乎有一些行完全缺少右侧(df2)数据帧。我已经检查了第二个数据框,有一些列缺少值,但第二个数据框的行条目并非全部为空。任何想法,可能是什么导致了这一切@乔恩·斯诺很高兴能帮上忙。但我不确定你的意思-你是说有些日期时间没有正确转换吗?不,我的意思是组合文件中的第二个数据帧的条目在某些行中丢失,完全与第一个数据帧的条目相反。类似于df1在该行中有值,但df2值根本不存在。我想datetimes已正确转换,但是有一些情况下转换失败,从第二个df开始。例如,组合文件的datetime中的12:00缺少一个条目。我签入了df2,那个小时的值是存在的。@Jon_Snow_uum我不确定那里发生了什么。你的日期是年月日还是年月日?这可能会引起问题?有趣的观察,我会再次更彻底地查看该文件,但两列中的日期格式似乎是相同的。多谢!!他们是月日年顺便说一句