2015-04-26 11 views
6

Mam arkusz Excel, który wygląda tak:wyniki GroupBy do słownika list

Column1 Column2 Column3 
0  23  1 
1  5  2 
1  2  3 
1  19  5 
2  56  1 
2  22  2 
3  2  4 
3  14  5 
4  59  1 
5  44  1 
5  1  2 
5  87  3 

i szukam, aby wyodrębnić te dane, grupę go przez kolumny 1 i dodać go do słownika, dlatego wygląda następująco:

{0: [1], 
1: [2,3,5], 
2: [1,2], 
3: [4,5], 
4: [1], 
5: [1,2,3]} 

to jest mój kod tak daleko

excel = pandas.read_excel(r"e:\test_data.xlsx", sheetname='mySheet', parse_cols'A,C') 
myTable = excel.groupby("Column1").groups 
print myTable 

jednak moje wyjście wygląda następująco:

{0: [0L], 1: [1L, 2L, 3L], 2: [4L, 5L], 3: [6L, 7L], 4: [8L], 5: [9L, 10L, 11L]} 

Dzięki!

Odpowiedz

5

mogli Państwo groupby na Column1 a następnie wziąć Column3 do apply(list) i zadzwonić pod numer to_dict?

In [81]: df.groupby('Column1')['Column3'].apply(list).to_dict() 
Out[81]: {0: [1], 1: [2, 3, 5], 2: [1, 2], 3: [4, 5], 4: [1], 5: [1, 2, 3]} 
+0

To na pewno to robi! Dziękuję Ci! – SuperDougDougy

+0

Nieco oznacza akceptację tej odpowiedzi, gdy @ EdChum's jest identyczny i został opublikowany 3 minuty wcześniej. – LondonRob

2

Według the docs The GroupBy.groups:

jest DICT których klucze są obliczane unikalnych grup i odpowiednich wartości będącymi osi etykiety należącym do danej grupy.

Jeśli chcesz się wartościami, można groupby „Kolumna1”, a następnie zadzwonić apply i przekazać metodę list zwrócić się do każdej grupy.

można następnie przekształcić go w dict jako pożądane:

In [5]: 

dict(df.groupby('Column1')['Column3'].apply(list)) 
Out[5]: 
{0: [1], 1: [2, 3, 5], 2: [1, 2], 3: [4, 5], 4: [1], 5: [1, 2, 3]} 

(Uwaga: spojrzeć na this SO question, dlaczego numery są następnie L)

+0

Dziękuję bardzo za odpowiedź! – SuperDougDougy

+0

@SuperDougDougy możesz teraz przegłosować ;-) – EdChum