Noq*_*que 5 python dataframe pandas
我想在 Pandas DataFrame 中找到连续 NaN 的那些索引,其中超过 3 个连续 NaN 返回它们的大小。那是:
58234 NaN
58235 NaN
58236 0.424323
58237 0.424323
58238 NaN
58239 NaN
58240 NaN
58241 NaN
58242 NaN
58245 NaN
58246 1.483380
58247 1.483380
Run Code Online (Sandbox Code Playgroud)
应该返回类似 (58238, 6) 的内容。返回的实际格式并不重要。我发现了以下内容。
df.a.isnull().astype(int).groupby(df.a.notnull().astype(int).cumsum()).sum()
Run Code Online (Sandbox Code Playgroud)
但它没有为每个索引返回正确的值。这个问题可能与用熊猫识别连续的 NaN非常相似, 但任何帮助都将不胜感激,因为我是熊猫的菜鸟。
我分解了步骤:
df['Group']=df.a.notnull().astype(int).cumsum()
df=df[df.a.isnull()]
df=df[df.Group.isin(df.Group.value_counts()[df.Group.value_counts()>3].index)]
df['count']=df.groupby('Group')['Group'].transform('size')
df.drop_duplicates(['Group'],keep='first')
Out[734]:
a Group count
ID
58238 NaN 2 6
Run Code Online (Sandbox Code Playgroud)