python - Pandas - 在 groupby() 和 sum() 之后产生 JSON 响应
问题描述
这是我的数据框
Candidate Name Score
0 04cb11ef8edf16e46a21741d8f41a2a4e5b87309938835... 0
1 04cb11ef8edf16e46a21741d8f41a2a4e5b87309938835... 3
2 04cb11ef8edf16e46a21741d8f41a2a4e5b87309938835... 4
0 092c7c810ede0567b8e23322f47dd2e00e99e573d03292... 0
0 5ec10b8c7f6de34b171d9eaf2feb3eb8259e885c9ec1ce... 3
0 9e9bd06cafe352be143b9ad048b502f2c705344a8317b2... 3
1 9e9bd06cafe352be143b9ad048b502f2c705344a8317b2... 4
2 9e9bd06cafe352be143b9ad048b502f2c705344a8317b2... 0
3 9e9bd06cafe352be143b9ad048b502f2c705344a8317b2... 0
0 a75af89c99cfa13a005a73fca54b2d47fe4721a61f33cc... 0
0 a828b55bf32197c6777ad2279d24c3a381f9cdfa2b83d5... 0
0 ab94b93874d3f259dd959233f9bc96216987c0059d52a3... 0
0 b37d73fa1edf8a54dc5026935c6779baedc870897cf286... 0
0 c1e3852952eacca7805fa35fc4d0878a2de95c45cf58f9... 0
0 c5d504030146fcc7d54dfc022c5b4cbf825f5fa5b1cd69... 0
0 c319b89c6ab27ee32dad62ce6f7f1704c3f143407f918a... 0
0 da8f8bd172979e343bda34213dc94d14745433a17f0e4f... 0
0 f8949169525d585e35ac14561321c4746cff6dc9a3ac3f... 0
问题是我想在完成后获得总分groupby()
,sum()
但我不确定一旦我这样做会变成 JSON 响应,因为之后的数据帧不会加起来......
总分将取代分数栏。公式总分是 13 的除数并转换为百分比。假设得分为 3。总得分为 3/13 * 100 = 23.0769230769
df = df.groupby(['Candidate Name'])['Score'].sum()
Candidate Name
04cb11ef8edf16e46a21741d8f41a2a4e5b873099388352c18fc168933111256 7
092c7c810ede0567b8e23322f47dd2e00e99e573d0329236b293dff49402fd1d 0
5ec10b8c7f6de34b171d9eaf2feb3eb8259e885c9ec1ceffb937d3ec69bd48b6 3
9e9bd06cafe352be143b9ad048b502f2c705344a8317b260e26dc7641018b735 7
a75af89c99cfa13a005a73fca54b2d47fe4721a61f33cc9e419e99de88d45bd1 0
a828b55bf32197c6777ad2279d24c3a381f9cdfa2b83d5631035cd20f058f0a1 0
ab94b93874d3f259dd959233f9bc96216987c0059d52a33e96cc85e6717b6d93 0
b37d73fa1edf8a54dc5026935c6779baedc870897cf286379c7d49a55371328c 0
c1e3852952eacca7805fa35fc4d0878a2de95c45cf58f994480877eb80074b23 0
c319b89c6ab27ee32dad62ce6f7f1704c3f143407f918a0327eb967236849d04 0
c5d504030146fcc7d54dfc022c5b4cbf825f5fa5b1cd69c9cccd10490f05e5c1 0
da8f8bd172979e343bda34213dc94d14745433a17f0e4f749ea5b91faf02a939 0
f8949169525d585e35ac14561321c4746cff6dc9a3ac3f4ce1b8d7e45d3177d4 0
Name: Score, dtype: int64
示例 JSON 如下所示
{"Mobile_Application_Developer": {"04cb11ef8edf16e46a21741d8f41a2a4e5b873099388352c18fc168933111256": 53.8461538462, "5ec10b8c7f6de34b171d9eaf2feb3eb8259e885c9ec1ceffb937d3ec69bd48b6": 23.0769230769}}
Mobile_Application_Developer
检索总分后需要插入值。
解决方案
在第一步中将值除以13
和乘以,然后转换为字典:100
d = df.groupby(['Candidate Name'])['Score'].sum().div(13).mul(100).to_dict()
print (d)
{'04cb11ef8edf16e46a21741d8f41a2a4e5b87309938835...': 53.84615384615385, '092c7c810ede0567b8e23322f47dd2e00e99e573d03292...': 0.0, '5ec10b8c7f6de34b171d9eaf2feb3eb8259e885c9ec1ce...': 23.076923076923077, '9e9bd06cafe352be143b9ad048b502f2c705344a8317b2...': 53.84615384615385, 'a75af89c99cfa13a005a73fca54b2d47fe4721a61f33cc...': 0.0, 'a828b55bf32197c6777ad2279d24c3a381f9cdfa2b83d5...': 0.0, 'ab94b93874d3f259dd959233f9bc96216987c0059d52a3...': 0.0, 'b37d73fa1edf8a54dc5026935c6779baedc870897cf286...': 0.0, 'c1e3852952eacca7805fa35fc4d0878a2de95c45cf58f9...': 0.0, 'c319b89c6ab27ee32dad62ce6f7f1704c3f143407f918a...': 0.0, 'c5d504030146fcc7d54dfc022c5b4cbf825f5fa5b1cd69...': 0.0, 'da8f8bd172979e343bda34213dc94d14745433a17f0e4f...': 0.0, 'f8949169525d585e35ac14561321c4746cff6dc9a3ac3f...': 0.0}
然后添加dict的外层并转换为json:
import json
json = json.dumps({"Mobile_Application_Developer":d})
推荐阅读
- javascript - 使用特定输出将 XML 批量转换为 JSON
- html - div背景图片
- ios - Swift - 如果尚未设置,则设置 UserDefault
- django - Django 开发服务器
- mysql - 如何找到选择最少学生的课程名称
- pandas - 如何使用 seaborn 创建多条线图并找到速率?
- ionic-framework - 用离子语音识别捕捉“再试一次”
- android - Android 分支 IO SDK 策略违规
- json - Scala 猫 - 编码/解码 json 的问题
- javascript - ER_PARSE_ERROR 您的 SQL 语法有错误:从 MySQL 中选择整个表