我具有基于不同气象站几个变量(温度,压力等)的数据集,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