Ich habe einen Datensatz basierend auf verschiedene Wetterstationen für mehrere Variablen (Temperatur, Druck, etc.),Python Pandas - konstruieren multivariate Pivot-Tabelle Anzahl der NaNs angezeigt werden und nicht-NaNs
stationID | Time | Temperature | Pressure |...
----------+------+-------------+----------+
123 | 1 | 30 | 1010.5 |
123 | 2 | 31 | 1009.0 |
202 | 1 | 24 | NaN |
202 | 2 | 24.3 | NaN |
202 | 3 | NaN | 1000.3 |
...
und ich würde wie eine Pivot-Tabelle zu erstellen, die die Anzahl der NaNs und nicht-NaNs pro Wetterstation, so dass zeigen würde:
stationID | nanStatus | Temperature | Pressure |...
----------+-----------+-------------+----------+
123 | NaN | 0 | 0 |
| nonNaN | 2 | 2 |
202 | NaN | 1 | 2 |
| nonNaN | 2 | 1 |
...
im Folgenden werde ich zeigen, was ich bisher getan haben, was (in eine umständliche Art und Weise) eignen sich für Temperatur. Aber wie kann ich das gleiche für beide Variablen erhalten, wie oben gezeigt?
import pandas as pd
import bumpy as np
df = pd.DataFrame({'stationID':[123,123,202,202,202], 'Time':[1,2,1,2,3],'Temperature':[30,31,24,24.3,np.nan],'Pressure':[1010.5,1009.0,np.nan,np.nan,1000.3]})
dfnull = df.isnull()
dfnull['stationID'] = df['stationID']
dfnull['tempValue'] = df['Temperature']
dfnull.pivot_table(values=["tempValue"], index=["stationID","Temperature"], aggfunc=len,fill_value=0)
Die Ausgabe lautet:
----------------------------------
tempValue
stationID | Temperature
123 | False 2
202 | False 2
| True 1
Sie es beenden können mit einem '.STACK (level = 1)' – root
@root, ja, das ist es, dank ab Menge! – MaxU
Super, @MaxU und @root! Der '.stack (level = 1)' war das Sahnehäubchen! (Ich wünschte nur, es gäbe eine Möglichkeit, die Ausgabe auf die nächste ganze Zahl zu runden. Ich habe versucht, 'round' und' int' zu verwenden, aber sie haben nicht funktioniert) – mmeclimate