python - 将列中的几个 0 替换为平均值 0 及其后续行

标签 python pandas

我需要将列中的后续零替换为这些后续零和后续值的平均值。有没有一种优雅的方法来做到这一点,而不是逐一迭代所有行?

import pandas as pd
import datetime as dt
dates=pd.date_range(start = dt.date(2019,1,1), end=dt.date(2019,1,18), freq='1D')
data=[3,1,3.3,0,0,6,2.7,3,4,2.1,0,0,0,0,0,12,8,7]
df = pd.DataFrame(data=data, index=dates, columns=['how it is now'])
df['how it should be']= [3,1,3.3,2,2,2,2.7,3,4,2.1,2,2,2,2,2,2,8,7] 

谢谢。

最佳答案

给你

df.groupby(df['how it is now'].ne(0).iloc[::-1].cumsum())['how it is now'].transform('mean')

关于python - 将列中的几个 0 替换为平均值 0 及其后续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58593713/

相关文章:

python - 为什么 'else' 和 'if' 语句都在运行?

c# - 如何编写一个vb.net代码来编译C/C++程序?

python - Pandas 日期时间索引选择

python - 如何在保留列的同时找到累积计数行之间的差异

python - 我应该如何读取和使用 ~40GB csv 中的数据进行时间序列预测?

python - 隐藏工作表或有效隐藏 excel 选项卡的 Pandas to_excel?

Python-连接两个相同的列并保持其他不变

python - pytest:使用 fixture 和 pandas dataframe 进行参数化

python - 如何将对象属性传递给 Kivy .kv 文件

python - 使用 Python 最大限度地提高 Teensy 3.2 实时绘图数据的串行通信速度