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

使用plydata筛选仅数值列(排除布尔列)及跨数据框列筛选问题

在plydata中仅选择数值列(排除布尔列)

pandas的is_numeric会把布尔类型(bool)归为数值子类,所以直接用select_if('is_numeric')会把布尔列也包含进来。你可以通过直接判断数据类型来精确筛选:

import numpy as np
from plydata import select_if

titanic_data >> select_if(lambda x: np.issubdtype(x.dtype, np.number) and x.dtype != np.bool_)

或者用更简洁的写法,指定允许的数值类型:

titanic_data >> select_if(lambda x: x.dtype in (np.int64, np.float64))

你原来的代码里select_if('-is_bool')不生效,是因为plydata没有内置is_bool判断函数,直接通过dtype判断更可靠。


基于另一数据框取消选择列

可以先从目标数据框中提取要排除的列名列表,然后用select或drop操作移除这些列:

方法1:使用select排除列

# 从另一数据框other_df中获取要排除的列
cols_to_exclude = other_df.columns.tolist()
titanic_data >> select(f"-{cols_to_exclude}")

方法2:使用drop函数更直观

from plydata import drop

cols_to_exclude = other_df.columns.tolist()
titanic_data >> drop(cols_to_exclude)

如果只需要排除另一数据框中的部分列,直接传入对应的列名列表即可,比如cols_to_exclude = ['age', 'fare']。


内容的提问来源于stack exchange,提问作者Ransingh Satyajit Ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:15:59