如何筛选存储datetime.date类型的object dtype列?
筛选存储datetime.date类型的object列
方法一:逐列验证元素类型
遍历DataFrame所有列,同时满足两个条件:列的dtype为object,且列内所有元素均为datetime.date类型。
import datetime import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'num': [0, 1, 2], 'date_col': [datetime.date(2013,4,26), datetime.date(2007,4,25), datetime.date(2020,9,21)] }) # 筛选符合条件的列名 date_columns = [ col for col in df.columns if df[col].dtype == 'O' and all(isinstance(val, datetime.date) for val in df[col]) ] # 提取目标列 result_df = df[date_columns]
方法二:利用类型唯一性筛选
先统计每列的元素类型数量,筛选出仅有一种类型的object列,再验证该类型为datetime.date:
import datetime import pandas as pd # 获取每列的唯一类型数量 unique_type_counts = df.applymap(type).nunique() # 初步筛选:dtype为object且仅有一种元素类型的列 candidate_cols = unique_type_counts[(df.dtypes == 'O') & (unique_type_counts == 1)].index # 二次验证类型是否为datetime.date date_columns = [ col for col in candidate_cols if isinstance(df[col].iloc[0], datetime.date) ] result_df = df[date_columns]
处理含缺失值的情况
如果列中存在NaN等缺失值,可调整判断逻辑,允许缺失值存在:
date_columns = [ col for col in df.columns if df[col].dtype == 'O' and all(isinstance(val, datetime.date) or pd.isna(val) for val in df[col]) ]
内容的提问来源于stack exchange,提问作者Byoungchan Han
相关产品推荐
相关产品推荐

