python - 基于连续计数的反转值

标签 python pandas

我有一个仅包含 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/

相关文章:

python - 如何在 python 单元测试中模拟特定文件的存在?

python - 狮身人面像添加背景图像

python - Pandas ,分组并在组中找到最大值,返回值和计数

python - Pandas :根据列表中的重复值删除行

python - 从 pandas 单元格中删除 html 格式

python - 来自 Pandas 数据框的多个箱线图

python - Pandas 使用 apply 函数更新多列

python - 无法使用 resample.ohlc() 方法 - DataError : No numeric types to aggregate

python - 在 tensorflow 对象检测模型的训练数据集中重复图像

python - 导入错误 : No module named flask. ext.sqlalchemy 在 vi​​rtualenv