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

如何在DataFrame中筛选float32与float64类型的全部列?

筛选DataFrame中的float32和float64列

你之前的方法无效,核心原因是np.dtype('float')本质对应float64,所以你的判断只能排除单一种浮点类型,另一种float32会被错误保留。要同时匹配这两种浮点类型,这里有两种简洁可靠的解决方案:


方法1:使用select_dtypes(最推荐)

Pandas的select_dtypes方法可以直接指定要包含的类型,np.floating是所有浮点类型的父类,它会自动匹配float32和float64:

import numpy as np
import pandas as pd

# 筛选出所有浮点类型的列名
float_columns = df_.select_dtypes(include=[np.floating]).columns

# 如果需要直接获取对应的子DataFrame
float_df = df_.select_dtypes(include=[np.floating])

方法2:手动指定类型集合匹配

如果你想明确限定只匹配float32和float64,可以创建一个类型元组,遍历列的dtype进行判断:

target_float_types = (np.float32, np.float64)
float_columns = [col for col, dtype in df_.dtypes.items() if dtype in target_float_types]

# 生成对应的子DataFrame
float_df = df_[float_columns]

为什么你之前的方法不生效?

举个实际场景:假设你的DataFrame同时有float32和float64列,当你执行df_.dtypes.values != np.dtype('float')时:

  • float64的dtype等于np.dtype('float'),会被标记为False
  • float32的dtype不等于np.dtype('float'),会被标记为True
    这就导致你得到的categorical数组里,float32列被错误归类为非浮点列,完全不符合你的需求。

测试验证示例

我们可以用一个测试DataFrame验证效果:

df_ = pd.DataFrame({
    'float32_col': np.array([1.1, 2.2], dtype=np.float32),
    'float64_col': np.array([3.3, 4.4], dtype=np.float64),
    'int_col': [5, 6],
    'str_col': ['a', 'b']
})

# 方法1输出结果
print(df_.select_dtypes(include=[np.floating]).columns)
# 输出:Index(['float32_col', 'float64_col'], dtype='object')

# 方法2输出结果
print([col for col, dtype in df_.dtypes.items() if dtype in (np.float32, np.float64)])
# 输出:['float32_col', 'float64_col']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:05:32