如何删除Pandas DataFrame中指定日期间存在NaN值的列
Pandas指定时间区间内无NaN值列筛选方案
核心逻辑
仅判断目标时间区间内各列是否存在缺失值,保留该区间内无缺失的列,其余时间段的缺失值不影响筛选结果。
实现代码
首先确保你的DataFrame的Date列为datetime类型且已设为索引:
import pandas as pd # 预处理:日期格式转换与索引设置(如果已完成可跳过) df["Date"] = pd.to_datetime(df["Date"]) df = df.set_index("Date")
核心筛选逻辑:
# 提取目标时间区间的子数据集 target_df = df.loc["1959-03-01":"1959-06-01"] # 筛选出目标区间内无NaN的列名 keep_columns = target_df.columns[target_df.isna().sum(axis=0) == 0] # 从原数据中取出符合要求的列 result_df = df[keep_columns].reset_index() # 若需要保留Date为普通列可添加reset_index()
结果说明
运行上述代码后,result_df即为你需要的输出结果:仅保留col1、col5两列,其余列因在1959-03-01至1959-06-01区间内存在NaN值被剔除。
内容的提问来源于stack exchange,提问作者Herman L
相关产品推荐
相关产品推荐

