我有一个仅包含 1 和 0 的系列用作标志。我正在尝试找出一种计算连续重复值数量的好方法,如果它不符合阈值,我想反转它们。例如,如果连续重复的值少于 5 个,则将它们从 0 反转为 1,反之亦然。
例如:
Flag
1
1
1
1
1
0
0
0
0
1
1
...
会变成:
Flag
1
1
1
1
1
1
1
1
1
1
1
...
最佳答案
- 使用
diff().ne(0)
找到中断点 - 使用
cumsum()
创建组 - 使用
groupby.transform('size')
计算组的大小 - 然后用
sub(df.Flag).abs()
翻转值
df.Flag.groupby(
df.Flag.diff().ne(0).cumsum()
).transform('size').lt(5).sub(df.Flag).abs()
0 1
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 0
10 0
Name: Flag, dtype: int64
关于python - 基于连续计数的反转值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49660124/