Pandas dataframe threshold - 如果超过,则保持数字固定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas dataframe threshold - 如果超过,则保持数字固定相关的知识,希望对你有一定的参考价值。
从第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”做一个布尔值,然后对累积和应用一个掩码:
df = df.mask((df > 2.5).cumsum(axis=1) > 0, df)
答案
您可以通过NaN
找到where
的第一个非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
s持续值:
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
以上是关于Pandas dataframe threshold - 如果超过,则保持数字固定的主要内容,如果未能解决你的问题,请参考以下文章
pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快
将 Pandas Multiindexed DataFrame 与 Singleindexed Pandas DataFrame 合并
pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快