Ich habe einen Datenrahmen df
:
Serial_no date Index x y
1 2014-01-01 1 2.0 3.0
1 2014-03-01 2 3.0 3.0
1 2014-04-01 3 6.0 2.0
2 2011-03-01 1 5.1 1.3
2 2011-04-01 2 5.8 0.6
2 2011-05-01 3 6.5 -0.1
2 2011-07-01 4 3.0 5.0
3 2019-10-01 1 7.9 -1.5
3 2019-11-01 2 8.6 -2.2
3 2020-01-01 3 10.0 -3.6
3 2020-02-01 4 10.7 -4.3
3 2020-03-01 5 4.0 3.0
Hinweis: Die Daten werden nach gruppiert Serial_no
und die date
Daten werden monatlich (jeden ersten Monats) gemeldet. Die Index
Spalte ist so eingestellt, dass jedes aufeinanderfolgende gemeldete Datum eine fortlaufende Nummer in der Reihe ist. Die Anzahl der gemeldeten Daten in jeder Gruppe Serial_no
ist unterschiedlich. Das Intervall der gemeldeten Daten date
ist für jede Gruppe unterschiedlich Serial_no
(sie beginnen oder enden nicht für jede Gruppe am selben Datum).
Das Problem: Für einige Daten date
in der Zeitreihe wurden keine Daten gemeldet . Beachten Sie, dass in jeder Serial_no
Gruppe einige Daten fehlen . Ich möchte in jeder Gruppe eine Zeile für diese fehlenden Daten hinzufügen date
und die Daten x
und y
Spalten als 'NaN' melden .
Beispiel für den Datenrahmen, den ich brauche:
Serial_no date Index x y
1 2014-01-01 1 2.0 3.0
1 2014-02-01 2 NaN NaN
1 2014-03-01 3 3.0 3.0
1 2014-04-01 4 6.0 2.0
2 2011-03-01 1 5.1 1.3
2 2011-04-01 2 5.8 0.6
2 2011-05-01 3 6.5 -0.1
2 2011-06-01 4 NaN NaN
2 2011-07-01 5 3.0 5.0
3 2019-10-01 1 7.9 -1.5
3 2019-11-01 2 8.6 -2.2
3 2019-12-01 3 NaN NaN
3 2020-01-01 4 10.0 -3.6
3 2020-02-01 5 10.7 -4.3
3 2020-03-01 6 4.0 3.0
Ich weiß, wie man die leeren Zellen durch NaN
Einfügen der Zeilen mit fehlenden Daten ersetzt, indem ich den folgenden Code verwende:
import pandas as pd
import numpy as np
df['x'].replace('', np.nan, inplace=True)
df['y'].replace('', np.nan, inplace=True)
Ich weiß auch, wie man den Index zurücksetzt, sobald die Zeilen mit fehlenden Daten mit dem folgenden Code eingefügt wurden:
df["Index"] = df.groupby("Serial_no",).cumcount('date')
Ich bin mir jedoch nicht sicher, wie ich die fehlenden Daten in jeder Gruppe finden und die Zeile für diese (monatlich gemeldeten) Daten einfügen soll. Jede Hilfe wird geschätzt.