Using pandas 0.15.1. Suppose I have the following two dataframes:
daily
2014-11-20 00:00:00 Rain
2014-11-21 00:00:00 Cloudy
2014-11-22 00:00:00 Sunny
.
minutely
2014-11-20 12:45:00 51
2014-11-20 12:46:00 43
2014-11-20 12:47:00 44
...
2014-11-21 12:45:00 44
2014-11-21 12:46:00 46
2014-11-21 12:47:00 48
...
2014-11-22 12:45:00 38
2014-11-22 12:46:00 32
2014-11-22 12:47:00 37
I'd like to combine the two dataframes such that the day values get propagated to each minute row that have the corresponding day.
And since the minute rows do not actually have data at 00:00:00 I do not want that time included in the resulting dataframe. Desired output:
2014-11-20 12:45:00 51 Rain
2014-11-20 12:46:00 43 Rain
2014-11-20 12:47:00 44 Rain
...
2014-11-21 12:45:00 44 Cloudy
2014-11-21 12:46:00 46 Cloudy
2014-11-21 12:47:00 48 Cloudy
...
2014-11-22 12:45:00 38 Sunny
2014-11-22 12:46:00 32 Sunny
2014-11-22 12:47:00 37 Sunny
How can I achieve this? Do I need to use merge, concat, or join?
starting with:
>>> left
minutely
2014-11-20 12:45:00 51
2014-11-20 12:46:00 43
2014-11-20 12:47:00 44
2014-11-21 12:45:00 44
2014-11-21 12:46:00 46
2014-11-21 12:47:00 48
2014-11-22 12:45:00 38
2014-11-22 12:46:00 32
2014-11-22 12:47:00 37
>>> right
daily
2014-11-20 Rain
2014-11-21 Cloudy
2014-11-22 Sunny
you may do:
>>> left['day'] = left.index.date
>>> right.index = right.index.date
>>> left.join(right, on='day', how='left')
minutely day daily
2014-11-20 12:45:00 51 2014-11-20 Rain
2014-11-20 12:46:00 43 2014-11-20 Rain
2014-11-20 12:47:00 44 2014-11-20 Rain
2014-11-21 12:45:00 44 2014-11-21 Cloudy
2014-11-21 12:46:00 46 2014-11-21 Cloudy
2014-11-21 12:47:00 48 2014-11-21 Cloudy
2014-11-22 12:45:00 38 2014-11-22 Sunny
2014-11-22 12:46:00 32 2014-11-22 Sunny
2014-11-22 12:47:00 37 2014-11-22 Sunny
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With