Reputation: 43
import pandas as pd
dataset = "C:/Users/ashik swaroop/Desktop/anaconda/Gene Dataset/acancergenecensus.csv"
datacan = pd.read_csv(dataset)
datacan = datacan.fillna(0)
cols_to_retain = datacan[[ "Tumour_Types_Somatic","Tumour_Types_Germline","Mutation_Types","Tissue_Type"]]
cat_dict = datacan[ cols_to_retain ].to_dict( orient = 'records' )
getting an error after running this please help or give suggestion :
cat_dict = datacan[ cols_to_retain ].to_dict( orient = 'records' )
Traceback (most recent call last):
File "<ipython-input-47-dde9a2c1af34>", line 1, in <module>
cat_dict = datacan[ cols_to_retain ].to_dict( orient = 'records' )
File "C:\Users\ashik swaroop\Anaconda2\lib\site-packages\pandas\core\frame.py", line 2055, in __getitem__
return self._getitem_frame(key)
File "C:\Users\ashik swaroop\Anaconda2\lib\site-packages\pandas\core\frame.py", line 2130, in _getitem_frame
raise ValueError('Must pass DataFrame with boolean values only')
ValueError: Must pass DataFrame with boolean values only
Upvotes: 0
Views: 1530
Reputation: 862481
You need change:
cols_to_retain = datacan[[ "Tumour_Types_Somatic","Tumour_Types_Germline","Mutation_Types","Tissue_Type"]]
cat_dict = datacan[ cols_to_retain ].to_dict( orient = 'records' )
to:
cols_to_retain = [ "Tumour_Types_Somatic","Tumour_Types_Germline","Mutation_Types","Tissue_Type"]
cat_dict = datacan[ cols_to_retain ].to_dict( orient = 'records' )
because if select by double []
is is called subset and return filtered DataFrame
, not columns names.
Another possible solution is:
df = datacan[[ "Tumour_Types_Somatic","Tumour_Types_Germline","Mutation_Types","Tissue_Type"]]
cat_dict = df.to_dict( orient = 'records' )
Upvotes: 1