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

如何从DataFrame中筛选列名存在于另一Series中的列?

问题解决方法

你的代码触发TypeError: unhashable type: 'Index',是因为df.columns是Pandas的Index对象,str.contains()无法直接接收这种不可哈希的类型,而且逻辑上也没处理A中Animal列的前缀问题。以下是正确的解决步骤:


1. 清洗A中的动物名称

A里的部分Animal值带有前缀(比如a.Bear、123.Giraffe),先剥离前缀,只保留和df列名一致的纯动物名称:

# 按.分割字符串,取最后一部分作为纯净动物名
clean_animals = A['Animal'].str.split('.').str[-1]

处理后clean_animals的结果:

0        Bear
1    Elephant
2     Giraffe
3    Kangaroo
Name: Animal, dtype: object

2. 从df中筛选匹配列

有两种简洁的实现方式:

方法一:用intersection直接获取匹配列名

selected_cols = df.columns.intersection(clean_animals)
result_df = df.loc[:, selected_cols]

方法二:用布尔索引筛选

# 生成列名是否在纯净动物列表中的布尔掩码
col_mask = df.columns.isin(clean_animals)
result_df = df.loc[:, col_mask]

最终结果

运行后result_df将只保留Bear、Elephant、Giraffe、Kangaroo这几列,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:43:19