【发布时间】:2019-04-03 23:04:47
【问题描述】:
我有一个 CSV 文件,我正在尝试使用 Pandas 将其转换为 JSON。它有多个标题,但为了简单起见,我们只说它有 3 个:“区域”、“州”和“销售人员”。三列,三行,其中经常有重复值(州名等)。
我的理想结果是:
{
"salesperson": [
{
"name": "John Doe",
"values": [
{
"region": "North America",
"state": "Connecticut"
},
{
"region": "North America",
"state": "Vermont"
}
]
},
{
"name": "Jane Doe",
"values": [
{
"region": "North America",
"state": "New York"
},
{
"region": "North America",
"state": "New Hampshire"
}
]
}
]
}
这是我目前用于读取数据并将其转换为 JSON 的内容。
df = pd.read_csv('Foo.csv', encoding="ISO-8859-1",
escapechar='\\')
result = (df.groupby(['salesperson'])
.apply(lambda x: x.to_dict('r'))
.to_json(orient='table')
)
return result
.to_json(orient='table') 很接近,它给了我
"data": [
{
"salesperson": "John Doe",
"values": [
{
"region": "North America",
"state": "Connecticut",
"salesperson": "John Doe"
},
但是“销售人员”仍在“价值观”中。我试过了
result = (df.groupby(['salesperson'])
.apply(lambda x: x.to_dict('r'))
.drop('salesperson')
.to_json(orient='table')
)
但这似乎不是正确的方法。
我不确定如何告诉它使用“salesperson”作为索引并将其从输出中删除,而不是在创建 JSON 文件后实际编辑它。
【问题讨论】:
-
能否分享您的 csv 文件样本
-
你试过 index=False 吗?