Как запустить цикл на уникальных парах из двух столбцов - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть этот фрейм данных

данные: enter image description here

, на котором я хочу запустить функцию на уникальных парах origin + destination и t_type.Ранее я только запускал функцию для t_type, поэтому я сделал это:

open_data = data[data['t_type']=="Open"].reset_index(drop=True)
all_data = data[data['t_type'] == "All"].reset_index(drop=True)
open = loader(open_data,open_trucks)    #open_trucks and all_trucks are
all = loader(all_data,all_trucks)       # from another dataframe

Я получил уникальные пары из этого:

data.groupby(['Origin','Destination']).size().reset_index()

Вывод:

Origin  Destination   0
Delhi   Doon          7
Delhi   Gurgaon       1
Delhi   Mumbai        8
.
.
.

Как извлечь данные из кадра данных на основе O + D?Мне жаль, если я повторяю это, но сегрегация данных здесь происходит дважды: один раз на O + D, а затем на t_type.

Я думал об этом псевдо-коде

for unique_pair in pairs:
    open_data = something(which I don't know how to extract)
    all_data = something(ditto)
    run the function and store the output

данные:

          t_type Origin Destination
0        Open   Doon     Gurgaon
1        Open   Doon     Gurgaon
2        Open   Doon     Gurgaon
3   Container  Delhi      Mumbai
4   Container  Delhi      Mumbai
5        Open   Doon      Mumbai
6        Open  Delhi      Mumbai
7        Open  Delhi      Mumbai
8        Open  Delhi      Mumbai
9         All  Delhi        Doon
10        All  Delhi        Doon
11        All  Delhi        Doon
12        All  Delhi        Doon
13        All   Doon     Gurgaon
14        All   Doon      Mumbai
15       Open   Doon     Gurgaon
16  Container  Delhi     Gurgaon
17        All  Delhi      Mumbai
18        All  Delhi      Mumbai
19  Container  Delhi        Doon
20  Container  Delhi        Doon
21  Container  Delhi        Doon
22       Open  Delhi      Mumbai
23  Container   Doon       Delhi
24  Container   Doon       Delhi
25  Container   Doon       Delhi
26  Container   Doon       Delhi
27  Container   Doon     Gurgaon

1 Ответ

1 голос
/ 30 апреля 2019

Я считаю, что вам нужно:

for i, df in data.groupby(['Origin','Destination']):
#if need processing by 3 columns 
#for i, df in data.groupby(['t_type', 'Origin', 'Destination']):
    print (df)

Или используйте пользовательскую функцию:

def func(df):
    print (df)
    #processing per groups

    return df

df1 = data.groupby(['Origin','Destination']).apply(func)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...