ich einen Datenrahmen mit den folgenden Informationen haben:Pandas Interpolation innerhalb eines groupby
filename val1 val2
t
1 file1.csv 5 10
2 file1.csv NaN NaN
3 file1.csv 15 20
6 file2.csv NaN NaN
7 file2.csv 10 20
8 file2.csv 12 15
Ich möchte die Werte in der Datenrahmen auf den Indizes basieren auf interpolieren, aber nur innerhalb jeder Dateigruppe.
zu interpolieren, die ich normalerweise
df = df.interpolate(method="index")
Und Gruppe tun würde, ich
grouped = df.groupby("filename")
ich die interpoliert Datenrahmen wie folgt aussehen möchte:
filename val1 val2
t
1 file1.csv 5 10
2 file1.csv 10 15
3 file1.csv 15 20
6 file2.csv NaN NaN
7 file2.csv 10 20
8 file2.csv 12 15
Wo Die NaNs sind immer noch bei t = 6 vorhanden, da sie die ersten Elemente in der file2-Gruppe sind.
Ich vermute, ich muss verwenden „anwenden“, aber nicht in der Lage, genau herauszufinden, wie ...
grouped.apply(interp1d)
...
TypeError: __init__() takes at least 3 arguments (2 given)
Jede Hilfe würde geschätzt.
Dies scheint auf einem kleinen Datenframe zu funktionieren, dauert aber eine * lange * Zeit auf einem großen (um Größenordnungen mehr Zeit als bei Verwendung von .interpolate()). Würden Sie erwarten, dass die Effizienz so viel schlechter ist? Die Anzahl der Gruppen ist klein im Vergleich zur Anzahl der Zeilen (etwa 1000 Gruppen im Vergleich zu 10^7 Zeilen). –