我正在尝试将字典键/值的嵌套列表合并到单个键和值列表中。我正在将csv文件加载到数据帧中,并从中尝试将其转换为嵌套的json。请看下面我已经试过了。我应该走这条路线来创建json还是pandas有一个本机功能来进行这种类型的转换?你知道吗
样本数据:
Subject,StudentName,Category
ENGLISH,Jane,
ENGLISH,,A
MATH,Matt,B
MATH,Newman,AA
MATH,,B
MATH,Dylan,A
ENGLISH,Noah,
ENGLISH,,C
试过这个:
df1 = pd.read_csv('../data/file.csv')
json_doc = defaultdict(list)
for _id in df1.T:
data = df1.T[_id]
key = data.Subject
values = {'StudentName': data.StudentName,'Category':data.Category}
json_doc[key].append(values)
new_d = json.dumps(json_doc, indent=4)
{k: int(v) for k, v in new_d} # error: ValueError: not enough values to unpack (expected 2, got 1)
我从上面的代码中得到:
{
"ENGLISH": [
{
"StudentName": "Jane",
"Category": NaN
},
{
"StudentName": NaN,
"Category": "A"
},
{
"StudentName": "Noah",
"Category": NaN
},
{
"StudentName": NaN,
"Category": "C"
}
],
"MATH": [
{
"StudentName": "Matt",
"Category": "B"
},
{
"StudentName": "Newman",
"Category": "AA"
},
{
"StudentName": NaN,
"Category": "B"
},
{
"StudentName": "Dylan",
"Category": "A"
}
]
}
如何合并键/值以使其看起来像这样?你知道吗
{
"ENGLISH": [
{
"StudentName": ["Jane","Noah"],
"Category": ["A","C"]
}
],
"MATH": [
{
"StudentName": ["Matt","Newman","Dylan"]
"Category": ["B","AA","A"]
}
]
}
我并不完全清楚是否可以安全地忽略缺失的值,但下面是我的一句话:
默认方法(to_json,to_dict)没有合适的
orient
选项。因此,我们必须手工完成一些工作,通过索引分组,然后将列数据转换为列表。然后,.to_dict(orient='index')
将执行您想要的操作(如果您想要字符串而不是对象,则替换为to_json
)。你知道吗注意:
Subject
这里应该是一个列,而不是索引。你知道吗相关问题 更多 >
编程相关推荐