You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Pandas DataFrame每行水平偏移的两类指标

解决Pandas偏移行的两类指标计算问题

先还原你的DataFrame:

Heading 1Heading 2Unnamed: 1Unnamed: 2
NaN3424NaN
5NaNNaNNaN
NaNNaN1377
NaNNaNNaN18

直接用以下代码就能算出你要的两个指标:

步骤1:构造DataFrame(已有可跳过)

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Heading 1': [np.nan, 5, np.nan, np.nan],
    'Heading 2': [34, np.nan, np.nan, np.nan],
    'Unnamed: 1': [24, np.nan, 13, np.nan],
    'Unnamed: 2': [np.nan, np.nan, 77, 18]
})

步骤2:计算两类指标

# 计算Spill over:Unnamed列的非NaN值数量
df['Spill over'] = df.filter(regex='Unnamed:.*').notna().sum(axis=1)

# 计算原始列的NaN值数量
df['原始列NaN数量'] = df[['Heading 1', 'Heading 2']].isna().sum(axis=1)

最终结果

运行后DataFrame会新增目标列,结果如下:

Heading 1Heading 2Unnamed: 1Unnamed: 2Spill over原始列NaN数量
NaN3424NaN11
5NaNNaNNaN00
NaNNaN137722
NaNNaNNaN1812

简单原理:

  • filter(regex='Unnamed:.*') 精准筛选所有Unnamed开头的列,notna()将非NaN值转为布尔值True(对应数值1),sum(axis=1)按行求和得到每行的非NaN数量。
  • 直接指定原始列列表,isna()将NaN值转为布尔值True(对应数值1),sum(axis=1)按行求和得到每行的NaN数量。

内容的提问来源于stack exchange,提问作者lowkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:55:25