gpt4 book ai didi

python - 如果行值等于 x - Pandas,则向前填充列

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

我正在尝试前向填充特定的列,但仅限于某行等于某个值的列。例如,使用下面的 df,我想要 .ffill() Val1, Val2, Helper where rows in Helper = 'Forward'。其他一切都应该保持不变。

df = pd.DataFrame({   
'Col' : ['X',np.nan,np.nan,'Y',np.nan,'Z',np.nan,np.nan,np.nan],
'Val1' : ['B',np.nan,np.nan,'A',np.nan,'C',np.nan,np.nan,np.nan],
'Val2' : ['A',np.nan,np.nan,'C',np.nan,'C',np.nan,np.nan,np.nan],
'Helper' : ['No',np.nan,np.nan,'Forward',np.nan,'Held',np.nan,np.nan,np.nan],
})

mask = df['Helper'].str.contains('Forward', na = True)

df.loc[mask, 'Val1'] = df['Val1']
df['Val1'] = df['Val1'].ffill()
df.loc[mask, 'Val1'] = np.nan

预期输出:

   Col Val1 Val2   Helper
0 X B A No
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 Y A C Forward
4 NaN A C Forward
5 Z C C Held
6 NaN NaN NaN NaN
7 NaN NaN NaN NaN
8 NaN NaN NaN NaN

最佳答案

试试这个

df.update(df.loc[df['Helper'].str.contains('Forward').ffill(), ['Val1','Val2','Helper']].ffill())

输出

print(df)
Col Val1 Val2 Helper
0 X B A No
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 Y A C Forward
4 NaN A C Forward
5 Z C C Held
6 NaN NaN NaN NaN
7 NaN NaN NaN NaN
8 NaN NaN NaN NaN

关于python - 如果行值等于 x - Pandas,则向前填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58829980/

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