首页 > 解决方案 > 如何在排除 NaN 的同时按列分组并计算其他列的总数?

问题描述

df = pd.DataFrame(
        {'ST': list('AABBBC'), 
         'NO': [5.3, 1.2, np.nan, 2.3, 4.2, 1.5],
         'CO':[3.4,np.nan, 4.1, 2.5,np.nan, 3.6]})
print (df)
  ST   NO   CO
0  A  5.3  3.4
1  A  1.2  NaN
2  B  NaN  4.1
3  B  2.3  2.5
4  B  4.2  NaN
5  C  1.5  3.6

在此处输入图像描述

python - 如何在Python中排除NaN时按列分组并计算其他列的总数?

标签: pythonpandascountpandas-groupbynan

解决方案


用于不包括s 和 reshape 的GroupBy.count计数值- 输出为:NaNDataFrame.stackMultiIndex Series

s = df.groupby('ST').count().stack()
print (s)
ST    
A   NO    2
    CO    1
B   NO    2
    CO    2
C   NO    1
    CO    1
dtype: int64

如果需要DataFrame

df1 = df.groupby('ST').count().stack().rename_axis(('ST','NEW')).reset_index(name='VAL')
print (df1)
  ST NEW  VAL
0  A  NO    2
1  A  CO    1
2  B  NO    2
3  B  CO    2
4  C  NO    1
5  C  CO    1

推荐阅读