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

筛选DataFrame中含'Nik'的元素时报错TypeError,求修复方法

问题修复方案

你出错的核心原因是:转置后的df_1_transposed.columns是原DataFrame的整数索引(0、1、2这类数值),你试图判断字符串'Nik'是否存在于整数中,自然会触发“int类型不可迭代”的错误——整数里没法查找字符串子串。

下面提供几种实用的解决方法:

方法1:直接处理原列表(最简单高效)

完全没必要用到pandas,直接对原列表做列表推导式即可:

name_list = ['Nikolas', 'Niki', 'Niko', 'George', 'Kate']
filtered_list = [name for name in name_list if 'Nik' in name]
# 输出结果:['Nikolas', 'Niki', 'Niko']

方法2:用pandas筛选(如果必须用DataFrame)

转置操作完全是多余的,直接在原DataFrame的name列上筛选行即可:

import pandas as pd

name_list = ['Nikolas', 'Niki', 'Niko', 'George', 'Kate']
df_1 = pd.DataFrame(name_list, columns=['name'])

# 筛选包含'Nik'的行,再转换为列表
filtered_df = df_1[df_1['name'].str.contains('Nik')]
filtered_list = filtered_df['name'].tolist()

如果你非要修改原代码(不推荐,属于绕弯路)

转置后的DataFrame中,行名是原列名'name',列是整数索引,你需要遍历转置后行的内容而非columns:

import pandas as pd

name_list = ['Nikolas', 'Niki', 'Niko', 'George', 'Kate']
df_1 = pd.DataFrame(name_list, columns=['name'])
df_1_transposed = df_1.T

# 遍历转置后第一行的所有值(即原列表的所有名称)
df_2 = [val for val in df_1_transposed.iloc[0] if 'Nik' in val]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:26:03