将cols填充为等于值,直到另一个值-熊猫

问题描述 投票:1回答:1

我正在尝试基于单独的列在ffill()中的两列中使用df值。我希望继续填充直到满足条件。使用下面的df,其中Val1Val2等于C,我想填充后续行,直到Code中的字符串以['FR','GE','GA']开头。

import pandas as pd
import numpy as np

df = pd.DataFrame({   
    'Code' : ['CA','GA','YA','GE','XA','CA','YA','FR','XA'],             
    'Val1' : ['A','B','C','A','B','C','A','B','C'],                 
    'Val2' : ['A','B','C','A','B','C','A','B','C'],
   })

mask = (df['Val1'] == 'C') & (df['Val2'] == 'C')

cols = ['Val1', 'Val2']

df[cols] = np.where(mask, df[cols].ffill(), df[cols])

预期输出:

  Code Val1 Val2
0   CA    A    A
1   GA    B    B
2   YA    C    C
3   GE    A    A
4   XA    B    B
5   CA    C    C
6   YA    C    C
7   FR    B    B
8   XA    C    C

注意:Code中的字符串被缩短为两个字符,但是在我的数据集中则更长,所以我希望使用startswith

我正在尝试基于单独的列在df中的两列中填充()值。我希望继续填充直到满足条件。使用下面的df,其中Val1和Val2等于C,我想要...

python pandas mask
1个回答
1
投票

问题类似于我之前回答过的启动/停止信号,但是找不到。所以这里是您提到的解决方案以及其他内容:

© www.soinside.com 2019 - 2024. All rights reserved.