python - Dataframe:在一个dataframe中找到最大的连续等数组,并得到该组的第一个和最后一个索引
问题描述
示例数据框:
col1 = {"a" : [1, np.nan, np.nan, np.nan, 2, 3, 4 , np.nan, np.nan, np.nan, np.nan, np.nan, np.nan,]}
df = pd.DataFrame(data=col1)
- 从数据框中找到最大的连续 NaN 值组。
- 从组中返回第一个和最后一个索引
在此示例中,输出将是: (7, 12)
解决方案
使用groupby
空值来获得连续空/非空值的“条纹”:
streaks = df["a"].isnull().groupby(df["a"].isnull().ne(df["a"].isnull().shift()).cumsum()).transform(sum)
indices = df[streaks==streaks.max()].index
>>> indices[0], indices[-1]
(7, 12)
推荐阅读
- scala - Spark 和 javax.crypto
- python - 计算具有 m 个面的 n 个骰子的频率 + 如何对元组中的元素进行排序。Python
- javascript - 赋值表达式的结果总是右边的值吗?
- python - Django 管理列表视图中的序列号
- jquery - 如何使用 jquery 根据 URL 的最后一个连字符添加 Class?
- python - 如何使用 Dataflow 在 apache 梁中跳过 io 级别的错误元素?
- vba - 仅在星期一自动生成电子邮件
- c# - 如何将 BigQuery 数据转换为自定义类型?
- python - 从零开始的双线性插值函数
- python - 如何在 django 中更新表单时获取预填充的表单