Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在特定条件下连接两个CSV文件或数据帧_Python_Pandas_Dataframe_Duplicates_Concatenation - Fatal编程技术网

Python 在特定条件下连接两个CSV文件或数据帧

Python 在特定条件下连接两个CSV文件或数据帧,python,pandas,dataframe,duplicates,concatenation,Python,Pandas,Dataframe,Duplicates,Concatenation,好吧,我似乎找不到解决办法,所以这是我的问题。如果stackoverflow社区的人能尽快提出解决方案,我将不胜感激,因为我必须提交结果 我有两个csv文件(可以作为数据帧加载)。一个csv文件有1458644行和12列,其中所有行条目都指定了事件,持续时间为6个月,最短为几秒钟 另一个包含天气数据的csv文件有4432个条目,每天的天气数据以6个月的小时(此处无秒持续时间)指定 我想做的是使用一些pythonic操作(或与条件连接)组合这两个文件的条目,以便将第二个数据帧的hour条目中的数据

好吧,我似乎找不到解决办法,所以这是我的问题。如果stackoverflow社区的人能尽快提出解决方案,我将不胜感激,因为我必须提交结果

我有两个csv文件(可以作为数据帧加载)。一个csv文件有1458644行和12列,其中所有行条目都指定了事件,持续时间为6个月,最短为几秒钟

另一个包含天气数据的csv文件有4432个条目,每天的天气数据以6个月的小时(此处无秒持续时间)指定

我想做的是使用一些pythonic操作(或与条件连接)组合这两个文件的条目,以便将第二个数据帧的hour条目中的数据添加到第一个数据帧中,但添加一个小时的条目(在第二个数据帧中指定)在第一个数据帧的一个小时内进行复制和重复

e、 g

第一数据帧

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我不确定那里发生了什么。你的日期是年月日还是年月日?这可能会引起问题?有趣的观察,我会再次更彻底地查看该文件,但两列中的日期格式似乎是相同的。多谢!!他们是月日年顺便说一句