Создание словаря информационных кадров из большого информационного кадра на основе многоиндексных данных с помощью цикла - PullRequest
0 голосов
/ 19 декабря 2018

Извините, если это кажется простым, но я изо всех сил пытался найти ответ на этот вопрос.

У меня большой кадр данных в формате на рисунке: dataframe

Каждая строка может быть однозначно идентифицирована с помощью мультииндекса, построенного из столбцов «trip_id», «direction_id», «stop_sequence».

Я хотел бы запросить методы, использующие циклы, для создания python-словаряфреймы данных, где каждый фрейм данных является подмножеством большого фрейма данных, который содержит все строки для каждого мультииндекса «trip_id» + «direction_id».

В конце цикла я хотел бы иметь возможность иметьPython-словарь данных, где я могу получить доступ к каждому словарю с помощью простого индексного ключа, например, от 0 до 10 000, или ключом является комбинация trip_id и direction_id

Например, для изображения выше, я хотел бы, чтобы все строкигде trip_id - "17067064.T0.2-EPP-F-mjp-1.8.R", а идентификатор направления - "1", чтобы находиться в одном кадре данных этого словарного набора.

СпасибоВам за помощь.

С уважением,

Бен

1 Ответ

0 голосов
/ 19 декабря 2018

Использование groupby с dictionary comprehension:

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,5,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
         'F':list('aaabbb')
}).set_index(['F','B','C'])

print (df)
       A  D  E
F B C         
a 4 7  a  1  5
  5 8  b  3  3
    9  c  5  6
b 5 4  d  7  9
    2  e  1  2
  4 3  f  0  4
       A  D  E

#python 3.6+ 
dfs = {f'{a}_{b}':v for (a, b), v in df.groupby(level=['F','B'])}
#python bellow
#dfs = {'{}_{}'.format(a,b):v for (a, b), v in df.groupby(level=['F','B'])}
print (dfs)
{'a_4':        A  D  E
F B C         
a 4 7  a  1  5, 'a_5':        A  D  E
F B C         
a 5 8  b  3  3
    9  c  5  6, 'b_4':        A  D  E
F B C         
b 4 3  f  0  4, 'b_5':        A  D  E
F B C         
b 5 4  d  7  9
    2  e  1  2}

print (dfs['a_4'])
       A  D  E
F B C         
a 4 7  a  1  5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...