Skip to main content
 首页 » 编程设计

python之Pandas 数据框,NAN 上的 cumsum 重置

2025年05月04日14jirigala

我知道这个问题存在,但我找不到足够简单的答案来理解和解决我的问题。我在数据框中有一列,我想保留此列的运行总计(cumsum)但重置 NAN 值

 Index  s_number  s_cumsum 
  0       1         1 
  1       4         5 
  2       6         11 
  3       Nan       0 
  4       7         7 
  5       2         9 
  6       3         12 

请您参考如下方法:

使用groupby 和cumsum:

df['s_cumsum'] = df.s_number.groupby(df.s_number.isna().cumsum()).cumsum() 
df 
 
   Index  s_number  s_cumsum 
0      0       1.0       1.0 
1      1       4.0       5.0 
2      2       6.0      11.0 
3      3       NaN       NaN 
4      4       7.0       7.0 
5      5       2.0       9.0 
6      6       3.0      12.0 

注意如果“s_number”是一列字符串,使用

df['s_number'] = pd.to_numeric(df['s_number'], errors='coerce) 

...首先,获取带有 NaN 的浮点列。


如果要填充 NaN,

df['s_cumsum'] = (df.s_number.groupby(df.s_number.isna().cumsum()) 
                    .cumsum() 
                    .fillna(0, downcast='infer')) 
df 
 
   Index  s_number  s_cumsum 
0      0       1.0         1 
1      1       4.0         5 
2      2       6.0        11 
3      3       NaN         0 
4      4       7.0         7 
5      5       2.0         9 
6      6       3.0        12