У меня есть набор данных на основе различных метеорологических станций для нескольких переменных (температура, давление и т.д.),Python панд - построить многомерную сводную таблицу, чтобы отобразить счетчик NaNs и не-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 |
...
и я бы хотел создать сводную таблицу, показывающее количество NaNs и не-NaNs на метеостанцию, так что:
stationID | nanStatus | Temperature | Pressure |...
----------+-----------+-------------+----------+
123 | NaN | 0 | 0 |
| nonNaN | 2 | 2 |
202 | NaN | 1 | 2 |
| nonNaN | 2 | 1 |
...
Ниже я покажу, что я делал до сих пор, который работает (в громоздком способе) для Температура. Но как я могу получить то же самое для обеих переменных, как показано выше?
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)
Выход:
----------------------------------
tempValue
stationID | Temperature
123 | False 2
202 | False 2
| True 1
Вы можете закончить его с '.stack (уровень = 1)' – root
@root, да, это так, спасибо много! – MaxU
Awesome, @MaxU и @root! '.stack (level = 1)' был глазурью на торте! (Я просто хочу, чтобы был способ округлить вывод до ближайшего целого числа.Я попытался использовать 'round' и' int', но они не сработали) – mmeclimate