使用pandas的to_dict方法报错:仅允许传入布尔值DataFrame
解决Pandas to_dict时的"Must pass DataFrame with boolean values only"错误
看来你在这里犯了个小语法失误,咱们一步步拆解问题:
错误根源
你先通过cols_to_retain = datacan[[...]]创建了一个包含目标列的DataFrame,但接下来用datacan[cols_to_retain]去索引原数据集的写法,是Pandas里的布尔索引语法——这种写法要求传入的必须是由布尔值组成的DataFrame/Series,而你传入的是普通的列数据,所以触发了这个报错。
修复后的完整代码
其实根本不需要多此一举用datacan[cols_to_retain],直接对已经筛选好列的cols_to_retain调用to_dict()就可以了:
import pandas as pd dataset = "C:/Users/ashik swaroop/Desktop/anaconda/Gene Dataset/acancergenecensus.csv" datacan = pd.read_csv(dataset) datacan = datacan.fillna(0) # 直接获取包含指定列的DataFrame cols_to_retain = datacan[[ "Tumour_Types_Somatic","Tumour_Types_Germline","Mutation_Types","Tissue_Type"]] # 直接对筛选后的结果转字典 cat_dict = cols_to_retain.to_dict(orient='records')
可选优化(让代码更紧凑)
如果你想简化步骤,也可以把列筛选和转字典合并成一行:
cat_dict = datacan[[ "Tumour_Types_Somatic","Tumour_Types_Germline","Mutation_Types","Tissue_Type"]].to_dict(orient='records')
这样就能顺利生成你需要的字典列表啦~
内容的提问来源于stack exchange,提问作者kk Ash
相关产品推荐
相关产品推荐

