python - 如何在排除 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时按列分组并计算其他列的总数?
解决方案
用于不包括s 和 reshape 的GroupBy.count
计数值- 输出为:NaN
DataFrame.stack
MultiIndex 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
推荐阅读
- r - 根据条件更改列中的值
- flutter - 无法使用外部小部件设置状态
- firebase - 带有规则的 Firestore Where 语句?
- mysql - MYSQL 8.0.17 CHECK 即使已实现也无法正常工作
- windows - 如何替换文件中的随机 IP 地址(Perl、Windows)
- spring-boot - Keycloak springboot 适配器不允许设置 keycloak.policy-enforcer-config.user-managed-access 属性
- ios - 带有对象映射器的动态键
- tensorflow - TFLiteConverter 会自动量化 Keras 模型吗?
- c# - 如何有选择地从现有 JSON 字符串中删除一些属性?
- servicenow - Rest API 以获取选定的布局/视图