gpt4 book ai didi

python - 排除行以在 Pandas 中进行滚动均值计算

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:31 25 4
gpt4 key购买 nike

我正在寻找 Pandas 方法来解决这个问题,我有一个 DataFrame 作为

df
A RM
0 384 NaN
1 376 380.0
2 399 387.5
3 333 366.0
4 393 363.0
5 323 358.0
6 510 416.5
7 426 468.0
8 352 389.0

我想看看 df['A'] 中的值 > [Previous] RM 值,然后新列 Status 应该更新 0 else

     A     RM  Status
0 384 NaN 0
1 376 380.0 1
2 399 387.5 0
3 333 366.0 1
4 393 363.0 0
5 323 358.0 1
6 510 416.5 0
7 426 468.0 0
8 352 389.0 1

我想我需要将 Shift 与 numpy where 一起使用,但我没有达到预期效果。

import pandas as pd
import numpy as np
df=pd.DataFrame([384,376,399,333,393,323,510,426,352], columns=['A'])


df['RM']=df['A'].rolling(window=2,center=False).mean()

df['Status'] = np.where((df.A > df.RM.shift(1).rolling(window=2,center=False).mean()) , 0, 1)

最后,应用滚动平均值

df.AverageMean=df[df['Status'] == 1]['A'].rolling(window=2,center=False).mean()

最佳答案

只是简单的shift

df['Status']=(df.A<=df.RM.fillna(9999).shift()).astype(int)
df
Out[347]:
A RM Status
0 384 NaN 0
1 376 380.0 1
2 399 387.5 0
3 333 366.0 1
4 393 363.0 0
5 323 358.0 1
6 510 416.5 0
7 426 468.0 0
8 352 389.0 1

关于python - 排除行以在 Pandas 中进行滚动均值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49802955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com