计算pandas DataFrame每行均值返回全NaN的问题求助
问题:计算Pandas DataFrame行均值返回全NaN
尝试计算Pandas DataFrame对象kirp_df的每行均值,获取对应行索引的均值结果,但即使移除缺失值后,执行代码每行仍返回NaN。
原代码
kirp_df = df.loc[:, df.loc["subtype"] == "KIRP"][:-2].dropna() kirp_df.mean(axis=1)
报错信息
/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: Dropping of nuisance columns in DataFrame reductions (with 'numeric_only=None') is deprecated; in a future version this will raise TypeError. Select only valid columns before calling the reduction. """Entry point for launching an IPython kernel. cg00000029 NaN cg00000165 NaN cg00000236 NaN cg00000289 NaN cg00000292 NaN .. cg09560658 NaN cg09560763 NaN cg09560811 NaN cg09560911 NaN cg09560953 NaN Length: 142513, dtype: float64
数据示例
# kirp_df.iloc[1:10,1:10].to_dict() { 'TCGA-2Z-A9J1-01A': { 'cg00000165': 0.0807243779293262, 'cg00000236': 0.867305510246114, 'cg00000289': 0.70680600651273, 'cg00000292': 0.217862460492399, 'cg00000321': 0.169408257004071, 'cg00000363': 0.173115013795265, 'cg00000622': 0.0108902025634162, 'cg00000658': 0.813866558997356, 'cg00000721': 0.938576461648791 }, 'TCGA-2Z-A9J2-01A': { 'cg00000165': 0.437447195378987, 'cg00000236': 0.898927359292032, 'cg00000289': 0.758108726247342, 'cg00000292': 0.868604834806246, 'cg00000321': 0.577744851436078, 'cg00000363': 0.567241575633452, 'cg00000622': 0.0122683781097633, 'cg00000658': 0.881366097769717, 'cg00000721': 0.936584647488041 }, # 其余数据省略 }
解决方案
核心问题是数据列类型可能为非数值型,且mean()方法默认未限定仅计算数值列,导致无法正确计算均值。
步骤1:转换数据为数值类型
确保所有参与计算的列都是浮点型,无法转换的非数值内容会被转为NaN:
kirp_df = df.loc[:, df.loc["subtype"] == "KIRP"][:-2].dropna() kirp_df = kirp_df.apply(pd.to_numeric, errors='coerce')
步骤2:指定仅计算数值列的行均值
调用mean()时明确numeric_only=True,避免非数值列干扰:
row_means = kirp_df.mean(axis=1, numeric_only=True)
完整修正代码
kirp_df = df.loc[:, df.loc["subtype"] == "KIRP"][:-2].dropna() kirp_df = kirp_df.apply(pd.to_numeric, errors='coerce') row_means = kirp_df.mean(axis=1, numeric_only=True) print(row_means)
期望输出
cg00000165 0.184634 cg00000236 0.893550 cg00000289 0.695737 cg00000292 0.634403 cg00000321 0.562375 cg00000363 0.299855 cg00000622 0.012570 cg00000658 0.867329 cg00000721 0.939761
内容的提问来源于stack exchange,提问作者melolilili
相关产品推荐
相关产品推荐

