我是SQL的新手.我有一个包含不同考试数据的数据库,例如:
Student Test Grade
--------------------
St1 T1 A
St2 T1 B
St3 T1 B
St1 T2 B
St2 T2 B
St3 T2 A
St1 T3 A
St2 T3 C
St3 T3 B
Run Code Online (Sandbox Code Playgroud)
然后,我想使用测试(T1,T2和T3)作为列打印报告:
Student T1 T2 T3
----------------------
St1 A B A
St2 B B C
St3 B A B
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的东西,但我不知道如何制作这样的打印输出.任何帮助表示赞赏!
我有一个基于不同气象站的数据集,用于几个变量(温度,压力等),
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 |
...
Run Code Online (Sandbox Code Playgroud)
我想删除'stationID'组,其中包含超过一定数量的NaN(考虑到计数中的所有变量).
如果我试试,
df.loc[df.groupby('station')['temperature'].filter(lambda x: len(x[pd.isnull(x)] ) < 30).index]
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下所示:Python pandas - 根据NaN计数阈值删除组
但是上面的例子只考虑了"温度".那么,我如何考虑可用变量的NaN的总和?即:我想删除一个组,其中[variable1,variable2,variable3,...]中的NaN的总和小于阈值.
我有一个基于不同气象站的数据集,
stationID | Time | Temperature | ...
----------+------+-------------+-------
123 | 1 | 30 |
123 | 2 | 31 |
202 | 1 | 24 |
202 | 2 | 24.3 |
202 | 3 | NaN |
...
Run Code Online (Sandbox Code Playgroud)
我想删除“ stationID”组,该组的NaN数量超过一定数量。例如,如果我键入:
**>>> df.groupby('stationID')**
Run Code Online (Sandbox Code Playgroud)
然后,我想删除组中至少具有一定数量的NaN(例如30个)的组。据我了解,我不能将dropna(thresh = 10)与groupby一起使用:
**>>> df2.groupby('station').dropna(thresh=30)**
*AttributeError: Cannot access callable attribute 'dropna' of 'DataFrameGroupBy' objects...*
Run Code Online (Sandbox Code Playgroud)
那么,用熊猫做到这一点的最佳方法是什么?