我有两个csv文件(可以作为数据帧加载)。一个csv文件包含1458644行和12列,所有行条目都指定了持续6个月的多天秒数。
其他带有天气数据的csv文件有4432个条目,每天的天气数据以小时(此处没有秒数)指定为6个月
我想要做的是组合两个文件的条目,使用一些pythonic操作(或连接条件),以便将第二个数据帧的小时条目中的数据添加到第一个数据帧但是条目为单个小时(在第二个数据帧中指定)重复并在第一个数据帧的单个小时内重复
e.g。
First Dataframe
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
第二个DataFrame
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
答案 0 :(得分:2)
如果我们转换为正确的日期时间,这是相当简单的:
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)