Pandas如何筛选a、b、c列无NaN且日期连续的行
实现代码
import pandas as pd # 1. 将date列转为日期格式,避免字符串计算出错 df['date'] = pd.to_datetime(df['date']) # 2. 先筛选a、b、c三列无空值的行 df_no_na = df.dropna(subset=['a', 'b', 'c'], how='any').copy() # 3. 给连续日期的行分配相同分组ID:相邻日期差不等于1时,标记为新分组的起点 df_no_na['group_id'] = df_no_na['date'].diff().dt.days.ne(1).cumsum() # 4. 筛选行数≥2的连续分组(如果要取最长的单段连续数据,可替换为下方注释代码) group_size = df_no_na.groupby('group_id')['group_id'].transform('count') result = df_no_na[group_size >= 2].drop(columns='group_id') # 取最长单段连续数据的替换代码: # max_group = df_no_na.groupby('group_id').size().idxmax() # result = df_no_na[df_no_na['group_id'] == max_group].drop(columns='group_id')
运行后result即为符合要求的结果。
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

