假设我有一个带有列a
的df,看起来像这样:
a
-
1
2
2
3
3
3
3
2
4
4
5
我正在寻找一种有效的方法,通过将它们转换为中间浮点数来“消除重复”值。因此,预期输出可以是下面显示的两个输出之一
a a
- -
1 1
2.25 2
2.5 2.33333
3.2 3
3.4 3.25
3.6 3.5
3.8 3.75
2.75 2.66666
4.33333 4
4.66666 4.5
5 5
我唯一能想到的是在a
上执行groupby,并在0到n之间放置一个np.linspace,其中n是该组的a
的值。但我认为这是低效的。是否有更好、更快的方法来做到这一点?谢谢你,谢谢
3条答案
按热度按时间4xrmg8kj1#
使用
groupby.cumcount
和groupby.transform('size')
:第二种方法:
输出量:
e37o9pze2#
您可以使用
np.linspace
来获得均匀间隔的数字:图纸:
kjthegm63#
仅对重复序列应用均匀分布(
np.random.uniform
):