我正在尝试基于单独的列在ffill()
中的两列中使用df
值。我希望继续填充直到满足条件。使用下面的df
,其中Val1
和Val2
等于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,我想要...
问题类似于我之前回答过的启动/停止信号,但是找不到。所以这里是您提到的解决方案以及其他内容: