我具有基於不同氣象站幾個變量(溫度,壓力等)的數據集,Python的熊貓 - 構造多元樞軸表來顯示NaN和非NaN的
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 |
...
和我想的計數想創建一個數據透視表,將顯示NaN,並且每氣象站非NaN的,這樣的數字:
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
真棒,@MaxU和@root! '.stack(level = 1)'是蛋糕上的糖霜! (我只是希望有一種方法可以將輸出四捨五入到最接近的整數。我曾嘗試使用'round'和'int',但它們不起作用) – mmeclimate