如何在Python中从csv构建多类列表?
我正试图建立一个基于像这样的数据框架的列表如何在Python中从csv构建多类列表?,python,list,dataframe,classification,multiclass-classification,Python,List,Dataframe,Classification,Multiclass Classification,我正试图建立一个基于像这样的数据框架的列表 TRAINING_DATA = [ ["accepted",{"APP": True , "FEE": False, "THY": False}], ["change accepted",{"APP": True , "FEE": False, "THY": False}],
TRAINING_DATA = [
["accepted",{"APP": True , "FEE": False, "THY": False}],
["change accepted",{"APP": True , "FEE": False, "THY": False}],
["yes i approve these changes",{"APP": True , "FEE": False, "THY": False}]
]
从Jupyter我可以毫无问题地创建它。但是,我需要从csv文件构建它。目前,我正在尝试以下内容:
text;class
"accepted"; {'APP': True , 'FEE': False, 'THY': False}
"change accepted";{'APP': True , 'FEE': False, 'THY': False}
在Python中,我使用以下命令加载文件:
df = pd.read_csv("prueba.csv", usecols=['text','class'], delimiter=";")
但是,正如标题中所述,我需要构建一个列表,将类列作为对象而不是文本。我用这句话创建了列表:
newList = df.values.tolist()
newList
但是,结果并不是预期的:
[['accepted', " {'APP': True , 'FEE': False, 'THY': False}"],
['change accepted', "{'APP': True , 'FEE': False, 'THY': False}"]]
可以看到,列表的第二个“列”被转换为字符串。我需要的是这个(没有“):
值得一提的是,我已经完成了以下句子:
df['class'] = df['class'].astype(object)
df['class'] = df['class'].astype('category')
但是没有成功
我需要知道的是如何写入csv文件,以及为了完成此任务,应该对数据帧进行什么处理?您需要做的是将包含字典的字符串转换为字典,这可以使用
ast.literal\u eval()
完成
在列表中,您在数组上循环,然后在第二个索引上使用ast.literal\u eval
,该索引是字符串“{APP':True,'FEE':False,'THY':False}”“
然后将其转换为字典。然后创建一个新数组,将第一个元素(字符串accepted
)放在第一位,然后将新字典放在第二位
注意:
只有当字符串中没有不必要的空格且包含字典时,这才有效。因此,请确保删除此字符串前面的空格“{APP':True,'FEE':False,'THY':False}”
,并将其更改为“{APP':True,'FEE':False,'THY':False}”
import ast
data = [
["accepted", "{'APP': True , 'FEE': False, 'THY': False}"],
["change accepted", "{'APP': True , 'FEE': False, 'THY': False}"],
]
data_ = [[d[0], ast.literal_eval(d[1])] for d in data]
print(data_)
输出:
[['accepted', {'APP': True, 'FEE': False, 'THY': False}], ['change accepted', {'APP': True, 'FEE': False, 'THY': False}]]
[['accepted', {'APP': True, 'FEE': False, 'THY': False}], ['change accepted', {'APP': True, 'FEE': False, 'THY': False}]]