Многократное сохранение данных Excel в словаре с использованием Python - PullRequest
1 голос
/ 27 февраля 2020

Я застрял в одной проблеме и не могу go впереди .. пожалуйста, нужна помощь, чтобы двигаться дальше. У меня есть вход Excel в этом формате ...

enter image description here

Name    usn          Sub   marks
dhdn    1bm15mca13    c     90
                     java   95
                     python 98
subbu   1bm15mca13   java   92
                     perl   91
paddu   1bm15mca13    c#    80
                     java   81

И я пытаюсь получить ожидаемый словарь в этом формате:

d = [
{
"name":"dhdn",
"usn":1bm15mca13",
"sub":["c","java","python"],
"marks":[90,95,98]
},
{
"name":"subbu",
"usn":1bm15mca14",
"sub":["java","perl"],
"marks":[92,91]
},
{
"name":"paddu",
"usn":1bm15mca17",
"sub":["c#","java"],
"marks":[80,81]
}
]

Пробный код, но он работает только для двух столбцов

import pandas as pd
existing_excel_file = 'test.xls'

df_service = pd.read_excel(existing_excel_file, sheet_name='Sheet1')

df_service = df_service.fillna(method='ffill')
result = [{'name':k,'sub':g["sub"].tolist()} for k,g in df_service.groupby("name")]
print (result)

Пожалуйста, предоставьте идею или предложение для решения моей проблемы.

1 Ответ

1 голос
/ 27 февраля 2020
import pandas as pd
existing_excel_file = 'test.xls'

df_service = pd.read_excel(existing_excel_file, sheet_name='Sheet1')

df_service = df_service.fillna(method='ffill')
result = [{'name':k[0],'usn':k[1],'sub':v["sub"].tolist(),"marks":v["marks"].tolist()} for k,v in df_service.groupby(['name', 'usn'])]
pprint (result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...