Python json添加多个键并迭代

Ari*_*iel 1 python json pandas

我想将数据帧转换为json,这是我目前拥有的代码:

my_frame = pd.DataFrame(
    {'Age':[30, 31], 
     'Eye':['blue', 'brown'], 
     'Gender': ['male', 'female']})
my_frame = my_frame.to_json(orient='records')
my_frame
Run Code Online (Sandbox Code Playgroud)

结果:

'[{"Age":30,"Eye":"blue","Gender":"male"},{"Age":31,"Eye":"brown","Gender":"female"}]'
Run Code Online (Sandbox Code Playgroud)

我想键添加到JSON对象,并添加关键信息在一个从数据框转换的整个数据.

add_keys = {'id': 101,
    'loc': 'NY',
}
add_keys['info'] = my_frame
add_keys
Run Code Online (Sandbox Code Playgroud)

结果:

{'id': 101,
 'info': '[{"Age":30,"Eye":"blue","Gender":"male"},
{"Age":31,"Eye":"brown","Gender":"female"}]',
 'loc': 'NY'}
Run Code Online (Sandbox Code Playgroud)

我想在info中打印两个记录中的每一个,但是当我运行这个迭代代码时,它会输出字符串的每个字符而不是整个记录.我相信这可能是我如何添加密钥的问题.

for item in add_keys['info']:
    print(item)
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢!

Shu*_*deo 5

最好在这里使用pandas内置功能.所以,这就是你需要的:add_keys['info'] = my_frame.T.to_dict().values()

这是整个代码:

>>> my_frame = pd.DataFrame(
...     {'Age':[30, 31],
...      'Eye':['blue', 'brown'],
...      'Gender': ['male', 'female']})
>>> my_frame
   Age    Eye  Gender
0   30   blue    male
1   31  brown  female
>>> add_keys = {'id': 101,
...     'loc': 'NY',
... }
>>> add_keys
{'loc': 'NY', 'id': 101}
>>> add_keys['info'] = my_frame.T.to_dict().values()
>>> add_keys
{'info': [{'Gender': 'male', 'Age': 30L, 'Eye': 'blue'}, {'Gender': 'female', 'Age': 31L, 'Eye': 'brown'}], 'loc': 'NY', 'id': 101}
>>> for item in add_keys['info']:
...     print(item)
...
{'Gender': 'male', 'Age': 30L, 'Eye': 'blue'}
{'Gender': 'female', 'Age': 31L, 'Eye': 'brown'}
>>>
Run Code Online (Sandbox Code Playgroud)