我的 csv 文件有一个特定的标题,其中每个字段都包含一个数据库表名称和列名称,并用斜杠分隔。简单的例子:
user/username,user/email,user/name,address/country,address/city
我需要将 pandas 数据框转换为如下所示的字典:
dict = {
"user": {
"username": "",
"email": "",
"name": ""
},
"address": {
"country": "",
"city": ""
}
}
最简单但效率较低的方法是使用 to_dict(orient='records') 方法将数据帧转换为字典,但显然它没有给出所需的输出,因此需要进行进一步的处理。在不触及列名称的情况下,我得到一个如下所示的字典:
dict = {
"user/username": "",
"user/email":"",
"user/name":"",
"address/country":"",
"address/city":"",
}
当按分隔符分割标头时,我得到一个多级标头,但是 to_dict 方法提供了一个以元组作为键的字典,因此需要再次进行处理才能获得所需的输出:
df.columns = df.columns.str.split('/', expand=True)
dict = {
("user","username"): "",
("user","email"): "",
("user","name"): "",
("address","country"): "",
("address","city"): "",
}
我还尝试使用 itertuples() 迭代行,但列名有问题。当我有一个多级标题或当我将其保留为 ,,/,, 字符时,它会用数字(_1、_2、_3...)替换列名称。
所以无论如何,我对于一个相对简单的任务有一些开销。当读取非常大的文件时,这种开销可能会产生问题。
我不是一个普通的 pandas 用户,所以我想有一个简单的方法来完成这个任务,但我无法用谷歌搜索出来。
jeck猫
相关分类