Создать словарь для каждой строки - PullRequest
0 голосов
/ 28 мая 2018

У меня есть файл Excel , в котором для каждой строки есть событие, из этого файла Excel я хотел бы создать словарь, например,

{ 'summary' : '223051-0011 Advanced Macroeconomics I',
  'location' : 'C5-d'
} 

и т. Д..

Проблема, с которой я столкнулся, заключается в том, что каким-то образом я не могу перебрать все столбцы, и для каждого из них создаю отдельный словарь, вот как я пытаюсь решить эту проблему:

excel_file = pd.read_excel(
'http://administracja.sgh.waw.pl/en/dsm/schedules/session/Documents/SMMB%2020172%20-%20changes%2017.05.18.xls',
encoding='utf-8', header=1)

n = 0
while n < len(excel_file.index) - 1:
    events = excel_file.iloc[n]
    n += 1

event_summary = {}
event_start = {}
event_end = {}
location = {}
event = {}

for row in events:
    event['summary'] = events.iloc[0]

    event_start['dateTime'] = events[6].replace(';', ' ') + events[3]
    print(event_start)

    event_end['dateTime'] = events[6].replace(';', ' ') + events[4]

1 Ответ

0 голосов
/ 28 мая 2018

Быстрый подход:

excel_file = pd.read_excel('http://administracja.sgh.waw.pl/en/dsm/schedules/session/Documents/SMMB%2020172%20-%20changes%2017.05.18.xls',
                           encoding='utf-8')
# note header=1 was removed as this infers the incorrect header
index_dict = dict()
for index, row in excel_file.iterrows():
    index_dict.update({index: {'subject': row['Subject'],
                               'place': row['Place']}})

Это дает вам индекс строки отображения основного словаря в сводный словарь с интересующей вас информацией. Например, index_dict[0] дает словарь сводной информации дляпервый ряд и тд.Вы можете выполнить любую дополнительную предварительную обработку в вышеупомянутом цикле for.

Чтобы сделать это еще более эффективно для всего кадра данных за один раз:

index_dict = excel_file.to_dict(orient='index')

Это дает основной словарь с записями:

{0: {'Date': '11-06-18;',
  'Day': 'Monday',
  'End': '15:10',
  'Place': 'A-210',
  'Start': '13:30',
  'Subject': '223051-0011 Advanced Macroeconomics I',
  'Teacher': 'Adamowicz Elżbieta - 0011'},
 1: {'Date': '18-06-18;',
  'Day': 'Monday',
  'End': '15:10',
  'Place': 'C-5d comp.',
  'Start': '13:30',
  'Subject': '223471-0131 Event History Analysis With SAS',
  'Teacher': 'Frątczak Ewa-0131'}, ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...