我正在将pandas与Python一起用于将Excel导出为JSON。这是我使用这个lib和python的第一天:)
Excel文件: My excel datas
或DataFrame:
DATA1 NAME CLIENT PHONE CLIENT NAME BOSS PHONE BOSS
0 123 JOHN DOE KING KING
我正在尝试使用这样的JSON:
[
{
"DATA1": 123,
"CLIENT": [
{
"NAME CLIENT": "John",
"PHONE CLIENT": "Doe"
}
],
"BOSS": [
{
"NAME BOSS": "King",
"PHONE BOSS": "King"
}
]
}
]
当我尝试获取第一个json数组没问题时,我正在使用它:
df.groupby(["DATA1"], as_index=False)
.apply(lambda x: x[['NAME CLIENT', 'PHONE CLIENT']].to_dict('r'))
.reset_index()
.rename(columns={0: 'CLIENT'})
.to_json(path_or_buf='output_path.json', orient='records'))
但是,如果我尝试同时获取两个数组,它将无法正常工作。我尝试执行多个apply或agg函数,但无法正常工作,而且我不知道该在哪里使用dict函数:
df.groupby(["DATA1"], as_index=False)
.agg({'CLIENT' : lambda x: x[['NAME CLIENT', 'PHONE CLIENT']],
'BOSS' : lambda x: x[['NAME BOSS', 'PHONE BOSS']]})
.reset_index()
.to_json(path_or_buf='output_path.json', orient='records'))
如果有人可以给我一些帮助... 谢谢大家:)
答案 0 :(得分:0)
您可以根据需要使用单独的功能来构建每条记录:
def f( df ):
return { 'CLIENT': df[ ['NAME CLIENT', 'PHONE CLIENT'] ],
'BOSS': df[ ['NAME BOSS', 'PHONE BOSS'] ],
'DATA1': df[ 'DATA1' ].values[0]
}
df.groupby("DATA1", as_index=False).apply( f ).to_json(path_or_buf='output_path.json', orient='records')