我有一个名为users_df
的数据框,它看起来像这样
<表类>
id
first_name
last_name
signup_date
tbody><<tr>1 詹姆斯道明> 2021-01-01 2标记 亚当斯 2021-03-02 3 玛丽 玫瑰 2021-05-03 表类>
我们可以使用字典推导来创建所需格式的记录
{'users': [{'id': d.pop('id'), 'user_fields': d} for d in users_df.to_dict('r')]}
{'users': [{'id': 1,
'user_fields': {'first_name': 'James',
'last_name': 'Smith',
'signup_date': '2021-01-01'}},
{'id': 2,
'user_fields': {'first_name': 'Mark',
'last_name': 'Adams',
'signup_date': '2021-03-02'}},
{'id': 3,
'user_fields': {'first_name': 'Mary',
'last_name': 'Rose',
'signup_date': '2021-05-03'}}]}
可以使用推导式从
构建期望的结构体users_df = pd.DataFrame([[1, 'James', 'Smith', '2021-01-01'],
[2, 'Mark', 'Adams', '2021-03-02'],
[3, 'Mary', 'Rose', '2021-05-03']],
columns=['id', 'first_name','last_name', 'signup_date'])
你已经发现了:
users_df.set_index('id').to_dict('index')
给:
{1: {'first_name': 'James', 'last_name': 'Smith', 'signup_date': '2021-01-01'},
2: {'first_name': 'Mark', 'last_name': 'Adams', 'signup_date': '2021-03-02'},
3: {'first_name': 'Mary', 'last_name': 'Rose', 'signup_date': '2021-05-03'}}
只需添加一步:
user_dict = {'users': [{'id': k, 'user_fields': v}
for k, v in users_df.set_index('id').to_dict('index')
.items()]}
:
{'users': [{'id': 1,
'user_fields': {'first_name': 'James',
'last_name': 'Smith',
'signup_date': '2021-01-01'}},
{'id': 2,
'user_fields': {'first_name': 'Mark',
'last_name': 'Adams',
'signup_date': '2021-03-02'}},
{'id': 3,
'user_fields': {'first_name': 'Mary',
'last_name': 'Rose',
'signup_date': '2021-05-03'}}]}
和一个简单的json.dumps
将它转换成一个字符串…