繁体   English   中英

仅当列中的值更改时向后平均

[英]backwards average only when value in column changes

我试图仅在值发生变化时计算 DataFrame 中最后 x 行的平均值

A 和 B 是我的输入,C 是我想要的 output

a = 0
def iloc_backwards (df, col):
    for i in df.index:
        val1 = df[col].iloc[i]
        val2 = df[col].iloc[i+1]
        if val1 == val2 :
            a+
        else: df.at[i,col] = df.rolling(window=a).mean()

A   B   C
1   0   0.25    
2   0   0.25
3   0   0.25    
4   1   0.25
5   0   0.5
6   1   0.5

如果您应该取所有值的平均值直到第一次遇到非零值,请尝试以下代码:

df['group'] = df['B'].shift().ne(0).cumsum()
df['C'] = df.groupby('group').B.transform('mean')
df[['A', 'B', 'C']]

这对应于您想要的 output。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM