问题
I want to merge a time serie of % humidity with a range of datetime created as expected, to fill missing records (or rows) with NaN and obtain a time serie based on 15min records (as long as the sensor is designed for).
Data of humidity following recorded datetime :
humdt = pd.DataFrame(data = data["la-salade"][["datetime","humidite"]])
datetime humidite
0 2019-07-09 08:30:00 87
1 2019-07-09 11:00:00 87
2 2019-07-09 17:30:00 82
3 2019-07-09 23:30:00 80
4 2019-07-11 06:15:00 79
5 2019-07-19 14:30:00 39
Recreated range of expected datetime :
date_rng = pd.period_range(start=debut, end=fin, freq='15min').strftime('%Y-%m-%d %H:%M:%S')
date_rng = pd.DataFrame(date_rng)
date_rng.columns = ["datetime"]
datetime
0 2019-07-09 08:30:00
1 2019-07-09 08:45:00
2 2019-07-09 09:00:00
3 2019-07-09 09:15:00
4 2019-07-09 09:30:00
5 2019-07-09 09:45:00
Merging expected vs recorded in order to obtain a consistent dataframe in terms of datetime (missing values are expected as NaN) :
merge_left = date_rng.merge(humdt, how="left", left_on="datetime", right_on="datetime")
datetime humidite
0 2019-07-09 08:30:00 87.0
1 2019-07-09 08:45:00 88.0
2 2019-07-09 09:00:00 88.0
3 2019-07-09 09:15:00 88.0
4 2019-07-09 09:30:00 89.0
5 2019-07-09 09:45:00 89.0
6 2019-07-09 10:00:00 88.0
7 2019-07-09 10:15:00 88.0
8 2019-07-09 10:30:00 88.0
9 2019-07-09 10:45:00 88.0
10 2019-07-09 11:00:00 87.0
Here is an example of dysfunctionning merging. Instead of NaN, values are added and I have no clue how... not even an linear interpolation (between 87 from 08H30 and 87 from 11H).
Can you help me please ? I also posted about trying to use resampling with 15min frequency but get other problems. Thank you. Emilie
来源:https://stackoverflow.com/questions/61807559/getting-wrong-values-after-merging-two-dataframe-on-datetime