Pandas mean()等函数如何强制输出所有列的完整计算结果
解决方案
Pandas内置数值统计函数默认仅对数值型列生效,要保留所有列输出,可采用以下两种常用实现方案:
方案1:强制转换列类型后计算(代码最简洁)
先对全表尝试转换为数值类型,无法转换的列值全部置为NaN,再执行统计计算,最终无法计算的列会自动返回NaN:
import pandas as pd # 示例DataFrame A = pd.DataFrame({"A": range(4), "B":["one", "two", "three", "four"], "C": range(4)}) # 转换+计算一行实现 res = A.apply(pd.to_numeric, errors='coerce').mean() print(res)
输出结果如下,包含所有3列,B列返回NaN:
A 1.5 B NaN C 1.5 dtype: float64
方案2:自定义安全计算函数(适配任意统计函数)
如果需要兼容更多自定义统计逻辑,可以封装带异常捕获的计算函数,遍历每列执行,遇到不支持计算的列直接返回NaN:
import pandas as pd A = pd.DataFrame({"A": range(4), "B":["one", "two", "three", "four"], "C": range(4)}) def safe_stat(func, col): try: return func(col) except: return pd.NA # 计算均值 mean_res = A.apply(lambda x: safe_stat(pd.Series.mean, x)) # 可直接传入其他统计函数,比如求和、标准差,返回结果索引完全和原表列对齐 sum_res = A.apply(lambda x: safe_stat(pd.Series.sum, x)) std_res = A.apply(lambda x: safe_stat(pd.Series.std, x))
内容的提问来源于stack exchange,提问作者PTQuoc
相关产品推荐
相关产品推荐

