我想在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
应该返回类似(58238,6)的值。返回的实际格式并不重要。我发现了以下内容。
df.a.isnull().astype(int).groupby(df.a.notnull().astype(int).cumsum()).sum()
但是它没有为每个索引返回正确的值。这个问题可能与识别连续的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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句