|
4 | 4 |
|
5 | 5 | """ |
6 | 6 |
|
7 | | -import numpy as np |
8 | | - |
9 | 7 |
|
10 | 8 | __copyright__ = "Copyright oemof developer group" |
11 | 9 | __license__ = "GPLv3" |
@@ -86,29 +84,19 @@ def linear_extra_interpolation(data_frame, requested_height, column_name): |
86 | 84 | (height_{requested} - height_1) + value_1 |
87 | 85 |
|
88 | 86 | with: |
89 | | - :math:`height_2`: largest/smallest value in data frame, |
90 | | - :math:`height_1`: second largest/smallest value in data frame, |
| 87 | + :math:`height_2`: largest/smallest index of data frame, |
| 88 | + :math:`height_1`: second largest/smallest index of data frame, |
91 | 89 | :math:`value_2`: corresponding value to `height_2`, |
92 | 90 | :math:`value_1`: correponding value to `height_1`, |
93 | | - :math:`height_{requested}` : Height for which the interpolation takes |
| 91 | + :math:`height_{requested}` : height for which the interpolation takes |
94 | 92 | place |
95 | 93 |
|
96 | 94 | """ |
97 | | - if requested_height > max(data_frame.index): |
98 | | - height_2 = max(data_frame.index) |
99 | | - value_2 = data_frame[column_name][height_2] |
100 | | - height_1 = sorted(data_frame.index)[-2] # Second largest number |
101 | | - value_1 = data_frame[column_name][height_1] |
102 | | - interpolant = ((value_2 - value_1) / (height_2 - height_1) * |
103 | | - (requested_height - height_1) + value_1) |
104 | | - elif requested_height < min(data_frame.index): |
105 | | - height_2 = min(data_frame.index) |
106 | | - value_2 = data_frame[column_name][height_2] |
107 | | - height_1 = sorted(data_frame.index)[1] # Second smallest number |
108 | | - value_1 = data_frame[column_name][height_1] |
109 | | - interpolant = ((value_2 - value_1) / (height_2 - height_1) * |
110 | | - (requested_height - height_1) + value_1) |
111 | | - else: |
112 | | - interpolant = np.interp(requested_height, data_frame.index, |
113 | | - data_frame[column_name]) |
| 95 | + height_2, value_2 = smallest_difference(data_frame, requested_height, |
| 96 | + column_name) |
| 97 | + data_frame_2 = data_frame.drop(height_2) |
| 98 | + height_1, value_1 = smallest_difference(data_frame_2, requested_height, |
| 99 | + column_name) |
| 100 | + interpolant = ((value_2 - value_1) / (height_2 - height_1) * |
| 101 | + (requested_height - height_1) + value_1) |
114 | 102 | return interpolant |
0 commit comments