问题描述
对于给定的一系列数字,我想找到重复的条目,并向每个重复的条目递增0.1。这是一个示例:
nums = pd.Series([1,2,3,4,5,6,7,8,9,10])
#some code here#
print(nums)
0 1
1 2
2 3
3 4
4 5
5 5.1
6 5.2
7 6
8 7
9 8
10 9
11 9.1
12 10
dtype: int64
我认为第一步是确定重复数字的索引:
nums.duplicated()
0 False
1 False
2 False
3 False
4 False
5 True
6 True
7 False
8 False
9 False
10 False
11 True
12 False
dtype: bool
但是我还没有弄清楚下一步,任何帮助将不胜感激。
解决方法
将GroupBy.cumcount
除以Series
作为计数器,除以10
并添加到原始Series
:
s = nums.add(nums.groupby(nums).cumcount().div(10))
print (s)
0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
5 5.1
6 5.2
7 6.0
8 7.0
9 8.0
10 9.0
11 9.1
12 10.0
dtype: float64