gpt4 book ai didi

python - Pandas dataframe 阈值——如果超过则保持数字固定

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:43 29 4
gpt4 key购买 nike

我有一个数据框,其中包含从第 1 天到第 7 天的三个人(John、Terry、Henry)的分数。

          1     2     3     4     5     6      7
John 1.3 2.8 3.0 4.4 2.6 3.1 4.8
Terry 1.1 2.3 4.1 5.5 3.7 2.1 3.8
Henry 0.3 1.0 2.0 3.0 2.7 1.1 2.8

我如何设置分数上限,以便一旦分数达到 > 2.5,无论分数是多少,从那天开始的所有分数都是固定的

输出应该是:

          1     2     3     4     5     6      7
John 1.3 2.8 2.8 2.8 2.8 2.8 2.8
Terry 1.1 2.3 4.1 4.1 4.1 4.1 4.1
Henry 0.3 1.0 2.0 3.0 3.0 3.0 3.0

尝试了以下没有用。我首先对大于 2.5 到“1”的所有数字执行 boolean 运算,然后对累积和应用掩码:

df = df.mask((df > 2.5).cumsum(axis=1) > 0, df)

最佳答案

您可以通过 where 找到第一个非 NaN 值使用 bfill 并通过 iloc 选择第一列:

m = (df > 2.5).cumsum(axis=1) > 0

s = df.where(m).bfill(axis=1).iloc[:, 0]
print (s)
John 2.8
Terry 4.1
Henry 3.0
Name: 1, dtype: float64

df = df.mask(m, s, axis=0)

shift屏蔽并转发填充 NaN 到最后一个值:

m = (df > 2.5).cumsum(axis=1) > 0
df = df.mask(m.shift(axis=1).fillna(False)).ffill(axis=1)
print (df)
1 2 3 4 5 6 7
John 1.3 2.8 2.8 2.8 2.8 2.8 2.8
Terry 1.1 2.3 4.1 4.1 4.1 4.1 4.1
Henry 0.3 1.0 2.0 3.0 3.0 3.0 3.0

关于python - Pandas dataframe 阈值——如果超过则保持数字固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48811596/

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