我有一个特定的系列在 Dataframe 上。
df=pd.DataFrame()
df['yMax'] = [127, 300, 300, 322, 322, 322, 322, 344, 344, 344, 366, 366, 367, 367, 367, 388, 388, 388, 388, 389, 389, 402, 403, 403, 403]
对于彼此非常接近的值,比如相差1的值,我想通过加1或减1来消除这个差,以得到相同的数字。
因此,例如,结果列表将变为:
df['yMax'] = [127, 300, 300, 322, 322, 322, 322, 344, 344, 344, 367, 367, 367, 367, 367, 389, 389, 389, 389, 389, 389, 403, 403, 403, 403]
我知道我们可以很容易地用df.diff()
求出相邻值之间的差。
0 NaN
1 173.0
2 0.0
3 22.0
4 0.0
5 0.0
8 0.0
6 22.0
7 0.0
9 0.0
10 22.0
11 0.0
12 1.0
13 0.0
14 0.0
15 21.0
16 0.0
17 0.0
20 0.0
18 1.0
19 0.0
21 13.0
22 1.0
23 0.0
24 0.0
Name: yMax, dtype: float64
但是我应该如何执行转换呢?
1条答案
按热度按时间kknvjkwl1#
如果连续的数字差为1,则将紧邻的连续数字上移。按原始数字分组,在调整后的列中选取最大值。代码如下