筛选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
相关产品推荐
相关产品推荐

