gpt4 book ai didi

python-3.x - 用 NaN 填充条件后的值

转载 作者:行者123 更新时间:2023-12-03 15:54:04 25 4
gpt4 key购买 nike

我有一个这样的 df:

df = pd.DataFrame(
[
['A', 1],
['A', 1],
['A', 1],
['B', 2],
['B', 0],
['A', 0],
['A', 1],
['B', 1],
['B', 0]
], columns = ['key', 'val'])
df
打印:
    key val
0 A 1
1 A 1
2 A 1
3 B 2
4 B 0
5 A 0
6 A 1
7 B 1
8 B 0
我想填充 val 列中 2 之后的行(在示例中,val 列中从第 3 行到第 8 行的所有值都替换为 nan)。
我试过这个:
df['val'] = np.where(df['val'].shift(-1) == 2, np.nan, df['val'])
并像这样迭代行:
for row in df.iterrows():
df['val'] = np.where(df['val'].shift(-1) == 2, np.nan, df['val'])
但无法让它向前填充nan。

最佳答案

您可以使用 boolean indexingcummax填写 nan值(value)观:

df.loc[df['val'].eq(2).cummax(), 'val'] = np.nan
或者,您也可以使用 Series.mask :
df['val'] = df['val'].mask(lambda x: x.eq(2).cummax())
  key  val
0 A 1.0
1 A 1.0
2 A 1.0
3 B NaN
4 B NaN
5 A NaN
6 A NaN
7 B NaN
8 B NaN

关于python-3.x - 用 NaN 填充条件后的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64025109/

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