You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排除pandas DataFrame中的datetime与object类型列?

解决方案:筛选DataFrame中非object和datetime类型的列

最简洁高效的方法:使用select_dtypes

Pandas内置的select_dtypes方法专门用来按数据类型筛选列,直接指定要排除的类型即可,不用手动循环:

# 排除object和datetime类型,保留其他列
filtered_df = df.select_dtypes(exclude=['object', 'datetime64'])
print(filtered_df)

运行后会得到只包含EmployeeID(int64)和Age(float64)的DataFrame,完全符合需求。

你原来代码的问题

你的循环逻辑有两个关键错误:

  1. dtype比较方式错误:np.datetime64是一个类型对象,而df[colName].dtypes是具体的dtype实例(比如datetime64[ns]),直接用!=比较永远返回True,导致datetime列没被排除。
  2. 判断object类型的方式不够严谨:虽然用df[colName].dtypes != 'object'能工作,但更可靠的是用类型对象或检查dtype的属性。

修改后的循环代码

如果坚持要用循环实现,修正后的代码如下:

import numpy as np

lst = list(df.columns)
for col_name in lst:
    dtype = df[col_name].dtypes
    # 排除object和datetime类型
    if not (np.issubdtype(dtype, np.object_) or np.issubdtype(dtype, np.datetime64)):
        print(df[col_name])

这里用np.issubdtype来检查列的dtype是否属于目标类型家族,能正确识别datetime64[ns]这类具体的datetime子类。

内容的提问来源于stack exchange,提问作者Shital

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:15:33