在 not nan 和 nan 之间交换时定义一个groupchange。然后可以使用cumsum派生一个组,并使用min和max派生一个组
df['group']=(df.Name.isna() != df.Name.isna().shift(1)).cumsum()
df_agg = df.groupby('group').agg({'Name':'first','Num':['min','max']})
output = [(a,b) if a!=b else a for a,b in df_agg.loc[df_agg[('Name','first')].isna(),[('Num','min'),('Num','max')]].values]
2条答案
按热度按时间wrrgggsh1#
在 not nan 和 nan 之间交换时定义一个groupchange。然后可以使用
cumsum
派生一个组,并使用min
和max
派生一个组这将在列表中产生所需的输出
1tu0hz3e2#
试试这个:
这将过滤df以仅包含
NaN
值,并使用groupby()
to对NaN
和non NaN
值之间的更改进行分组。最后,我们使用iloc
选择Num
列中的第一个和最后一个值,并使用dict.fromkeys()
仅选择唯一值,并保持顺序。输出: