首页 > 解决方案 > 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)
  1. 从数据框中找到最大的连续 NaN 值组。
  2. 从组中返回第一个和最后一个索引

在此示例中,输出将是: (7, 12)

标签: pythonpandasdataframefilter

解决方案


使用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)

推荐阅读