Gibt es eine bessere Möglichkeit, Upsample eine Reihe von Floats basierend auf Start-und Stoppbedingungen in jeder Zeile enthalten? Hier ist ein Beispiel das, was ich beginne mit:Upsample Nicht-Zeit-Daten
borehole top bottom lithology
0 AP-2 94.6 95.1 dolomite
1 AP-2 95.1 96.7 limestone
2 AP-2 96.7 97.0 dolomite
3 AP-2 97.0 97.5 limestone
4 AP-2 97.5 97.8 limestone
5 AP-3 87.4 87.7 limestone
6 AP-3 87.7 88.1 limestone
7 AP-3 88.1 88.5 dolomite
8 AP-3 88.5 89.1 limestone
Für jede Zeile I Reihen zwischen den oberen und unteren Werten hinzufügen möge einen gewählten Schritt mit und leiten die Bohrung und Lithologie Werte füllen. Das Inkrement ist im Datenrahmen konstant. Hier ist der gefüllte Datenframe, den ich für ein Inkrement von 0,1 haben möchte. (Dies ist nur für die ersten beiden Zeilen in der obigen Datenrahmen :)
borehole Top Lith
0 AP-2 94.6 dolomite
1 AP-2 94.7 dolomite
2 AP-2 94.8 dolomite
3 AP-2 94.9 dolomite
4 AP-2 95.0 dolomite
5 AP-2 95.1 limestone
6 AP-2 95.2 limestone
7 AP-2 95.3 limestone
8 AP-2 95.4 limestone
9 AP-2 95.5 limestone
10 AP-2 95.6 limestone
11 AP-2 95.7 limestone
12 AP-2 95.8 limestone
13 AP-2 95.9 limestone
14 AP-2 96.0 limestone
15 AP-2 96.1 limestone
16 AP-2 96.2 limestone
17 AP-2 96.3 limestone
18 AP-2 96.4 limestone
19 AP-2 96.5 limestone
20 AP-2 96.6 limestone
21 AP-2 96.7 limestone
Hier ist der Code, den ich verwendet habe, und es funktioniert, aber wenn ich eine Schleife in Pandas machen frage ich mich, wenn ich offensichtlich etwas fehlt bin . pd.DataFrame.resample() ist verlockend, aber ich kann nicht herausfinden, wie man es mit Nicht-Zeit-Daten arbeiten lassen kann.
import pandas as pd
import numpy as np
liths = pd.DataFrame(
{'borehole': {0: 'AP-2',
1: 'AP-2',
2: 'AP-2',
3: 'AP-2',
4: 'AP-2',
5: 'AP-3',
6: 'AP-3',
7: 'AP-3',
8: 'AP-3'},
'bottom': {0: 95.099999999999994,
1: 96.700000000000003,
2: 97.0,
3: 97.5,
4: 97.799999999999997,
5: 87.700000000000003,
6: 88.099999999999994,
7: 88.5,
8: 89.099999999999994},
'lithology': {0: 'dolomite',
1: 'limestone',
2: 'dolomite',
3: 'limestone',
4: 'limestone',
5: 'limestone',
6: 'limestone',
7: 'dolomite',
8: 'limestone'},
'top': {0: 94.599999999999994,
1: 95.099999999999994,
2: 96.700000000000003,
3: 97.0,
4: 97.5,
5: 87.400000000000006,
6: 87.700000000000003,
7: 88.099999999999994,
8: 88.5}}
)
filled = []
increment = 0.1
for row in liths.itertuples():
start = row.top
end = row.bottom
for i in np.arange(start, end, increment):
filled.append([row.borehole, i, row.lithology])
filled = pd.DataFrame(filled, columns=['borehole', 'Top', 'Lith']); filled