gpt4 book ai didi

python - 用先前的非零值替换零

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

我的数据框中有一个指标变量,其值为 1 0 或 -1。我想创建一个新变量来避免使用 0,而是重复指示变量的非零值,直到它变为 1 或 -1。

我尝试了使用 np.where 语句的各种构造,但我无法解决这个问题。

这是原始数据框:

import pandas as pd
df = pd.DataFrame(
{'Date': [1,2,3,4,5,6,7,8,9,10],
'Ind': [1,0,0,-1,0,0,0,1,0,0]})
df

enter image description here

我希望得到如下所示的数据框:

df2 = pd.DataFrame(
{'Date': [1,2,3,4,5,6,7,8,9,10],
'Ind': [1,0,0,-1,0,0,0,1,0,0],
'NewVar':[1,1,1,-1,-1,-1,-1,1,1,1]})

enter image description here

最佳答案

使用maskffill:

df['Ind'].mask(df['Ind'] == 0).ffill()

0 1.0
1 1.0
2 1.0
3 -1.0
4 -1.0
5 -1.0
6 -1.0
7 1.0
8 1.0
9 1.0
Name: Ind, dtype: float64

df['Ind'].mask(df['Ind'] == 0).ffill(downcast='infer')

0 1
1 1
2 1
3 -1
4 -1
5 -1
6 -1
7 1
8 1
9 1
Name: Ind, dtype: int64

另一种选择是使用 groupbytransform 使用由 cumsum 形成的石斑鱼:

df.groupby(df['Ind'].ne(0).cumsum())['Ind'].transform('first')

0 1
1 1
2 1
3 -1
4 -1
5 -1
6 -1
7 1
8 1
9 1
Name: Ind, dtype: int64

关于python - 用先前的非零值替换零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54471121/

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