Skip to content

Commit c3bec6e

Browse files
committed
add list example
1 parent 96fcec1 commit c3bec6e

File tree

2 files changed

+137
-103
lines changed

2 files changed

+137
-103
lines changed

Examples/cdata/ranking_pivot_example.ipynb

Lines changed: 88 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -270,88 +270,88 @@
270270
" <th>0</th>\n",
271271
" <td>1</td>\n",
272272
" <td>2001-01-02 00:00:00</td>\n",
273-
" <td>A</td>\n",
273+
" <td>['A']</td>\n",
274274
" <td>1</td>\n",
275275
" </tr>\n",
276276
" <tr>\n",
277277
" <th>1</th>\n",
278278
" <td>1</td>\n",
279279
" <td>2015-04-25 00:00:00</td>\n",
280-
" <td>B</td>\n",
280+
" <td>['B']</td>\n",
281281
" <td>2</td>\n",
282282
" </tr>\n",
283283
" <tr>\n",
284284
" <th>2</th>\n",
285285
" <td>2</td>\n",
286286
" <td>2000-04-01 00:00:00</td>\n",
287-
" <td>A</td>\n",
287+
" <td>['A']</td>\n",
288288
" <td>1</td>\n",
289289
" </tr>\n",
290290
" <tr>\n",
291291
" <th>3</th>\n",
292292
" <td>3</td>\n",
293293
" <td>2014-04-07 00:00:00</td>\n",
294-
" <td>D</td>\n",
294+
" <td>['D']</td>\n",
295295
" <td>1</td>\n",
296296
" </tr>\n",
297297
" <tr>\n",
298298
" <th>4</th>\n",
299299
" <td>4</td>\n",
300300
" <td>2005-06-16 00:00:00</td>\n",
301-
" <td>A</td>\n",
301+
" <td>['A']</td>\n",
302302
" <td>1</td>\n",
303303
" </tr>\n",
304304
" <tr>\n",
305305
" <th>5</th>\n",
306306
" <td>4</td>\n",
307307
" <td>2009-01-20 00:00:00</td>\n",
308-
" <td>B, D</td>\n",
308+
" <td>['B', 'D']</td>\n",
309309
" <td>2</td>\n",
310310
" </tr>\n",
311311
" <tr>\n",
312312
" <th>6</th>\n",
313313
" <td>4</td>\n",
314314
" <td>2012-12-01 00:00:00</td>\n",
315-
" <td>C</td>\n",
315+
" <td>['C']</td>\n",
316316
" <td>3</td>\n",
317317
" </tr>\n",
318318
" <tr>\n",
319319
" <th>7</th>\n",
320320
" <td>5</td>\n",
321321
" <td>2003-11-09 00:00:00</td>\n",
322-
" <td>B</td>\n",
322+
" <td>['B']</td>\n",
323323
" <td>1</td>\n",
324324
" </tr>\n",
325325
" <tr>\n",
326326
" <th>8</th>\n",
327327
" <td>5</td>\n",
328328
" <td>2010-10-10 00:00:00</td>\n",
329-
" <td>A</td>\n",
329+
" <td>['A']</td>\n",
330330
" <td>2</td>\n",
331331
" </tr>\n",
332332
" <tr>\n",
333333
" <th>9</th>\n",
334334
" <td>6</td>\n",
335335
" <td>2004-01-09 00:00:00</td>\n",
336-
" <td>B</td>\n",
336+
" <td>['B']</td>\n",
337337
" <td>1</td>\n",
338338
" </tr>\n",
339339
" </tbody>\n",
340340
"</table>\n",
341341
"</div>"
342342
],
343343
"text/plain": [
344-
" ID DATE OP rank\n",
345-
"0 1 2001-01-02 00:00:00 A 1\n",
346-
"1 1 2015-04-25 00:00:00 B 2\n",
347-
"2 2 2000-04-01 00:00:00 A 1\n",
348-
"3 3 2014-04-07 00:00:00 D 1\n",
349-
"4 4 2005-06-16 00:00:00 A 1\n",
350-
"5 4 2009-01-20 00:00:00 B, D 2\n",
351-
"6 4 2012-12-01 00:00:00 C 3\n",
352-
"7 5 2003-11-09 00:00:00 B 1\n",
353-
"8 5 2010-10-10 00:00:00 A 2\n",
354-
"9 6 2004-01-09 00:00:00 B 1"
344+
" ID DATE OP rank\n",
345+
"0 1 2001-01-02 00:00:00 ['A'] 1\n",
346+
"1 1 2015-04-25 00:00:00 ['B'] 2\n",
347+
"2 2 2000-04-01 00:00:00 ['A'] 1\n",
348+
"3 3 2014-04-07 00:00:00 ['D'] 1\n",
349+
"4 4 2005-06-16 00:00:00 ['A'] 1\n",
350+
"5 4 2009-01-20 00:00:00 ['B', 'D'] 2\n",
351+
"6 4 2012-12-01 00:00:00 ['C'] 3\n",
352+
"7 5 2003-11-09 00:00:00 ['B'] 1\n",
353+
"8 5 2010-10-10 00:00:00 ['A'] 2\n",
354+
"9 6 2004-01-09 00:00:00 ['B'] 1"
355355
]
356356
},
357357
"execution_count": 3,
@@ -361,9 +361,26 @@
361361
],
362362
"source": [
363363
"# define a user aggregation function\n",
364-
"# a function to paste a vector of strings together\n",
364+
"\n",
365+
"# # a function to paste a vector of strings together\n",
366+
"# def sorted_concat(vals):\n",
367+
"# return ', '.join(sorted([str(vi) for vi in set(vals)]))\n",
368+
"\n",
369+
"# just a class that doesn't declare an iterable interface\n",
370+
"# so Pandas thinks of these values as scalars.\n",
371+
"class Container:\n",
372+
" def __init__(self, value):\n",
373+
" self.value = value\n",
374+
" \n",
375+
" def __repr__(self):\n",
376+
" return self.value.__repr__()\n",
377+
" \n",
378+
" def __str__(self):\n",
379+
" return self.value.__repr__()\n",
380+
"\n",
381+
"\n",
365382
"def sorted_concat(vals):\n",
366-
" return ', '.join(sorted([str(vi) for vi in set(vals)]))\n",
383+
" return Container(sorted([str(vi) for vi in set(vals)]))\n",
367384
"\n",
368385
"# merge the operations to get one row per ID and DATE\n",
369386
"# then rank the rows for each ID by DATE\n",
@@ -705,17 +722,17 @@
705722
" <th>0</th>\n",
706723
" <td>1</td>\n",
707724
" <td>2001-01-02 00:00:00</td>\n",
708-
" <td>A</td>\n",
725+
" <td>['A']</td>\n",
709726
" <td>2015-04-25 00:00:00</td>\n",
710-
" <td>B</td>\n",
727+
" <td>['B']</td>\n",
711728
" <td>NaN</td>\n",
712729
" <td>NaN</td>\n",
713730
" </tr>\n",
714731
" <tr>\n",
715732
" <th>1</th>\n",
716733
" <td>2</td>\n",
717734
" <td>2000-04-01 00:00:00</td>\n",
718-
" <td>A</td>\n",
735+
" <td>['A']</td>\n",
719736
" <td>NaN</td>\n",
720737
" <td>NaN</td>\n",
721738
" <td>NaN</td>\n",
@@ -725,7 +742,7 @@
725742
" <th>2</th>\n",
726743
" <td>3</td>\n",
727744
" <td>2014-04-07 00:00:00</td>\n",
728-
" <td>D</td>\n",
745+
" <td>['D']</td>\n",
729746
" <td>NaN</td>\n",
730747
" <td>NaN</td>\n",
731748
" <td>NaN</td>\n",
@@ -735,27 +752,27 @@
735752
" <th>3</th>\n",
736753
" <td>4</td>\n",
737754
" <td>2005-06-16 00:00:00</td>\n",
738-
" <td>A</td>\n",
755+
" <td>['A']</td>\n",
739756
" <td>2009-01-20 00:00:00</td>\n",
740-
" <td>B, D</td>\n",
757+
" <td>['B', 'D']</td>\n",
741758
" <td>2012-12-01 00:00:00</td>\n",
742-
" <td>C</td>\n",
759+
" <td>['C']</td>\n",
743760
" </tr>\n",
744761
" <tr>\n",
745762
" <th>4</th>\n",
746763
" <td>5</td>\n",
747764
" <td>2003-11-09 00:00:00</td>\n",
748-
" <td>B</td>\n",
765+
" <td>['B']</td>\n",
749766
" <td>2010-10-10 00:00:00</td>\n",
750-
" <td>A</td>\n",
767+
" <td>['A']</td>\n",
751768
" <td>NaN</td>\n",
752769
" <td>NaN</td>\n",
753770
" </tr>\n",
754771
" <tr>\n",
755772
" <th>5</th>\n",
756773
" <td>6</td>\n",
757774
" <td>2004-01-09 00:00:00</td>\n",
758-
" <td>B</td>\n",
775+
" <td>['B']</td>\n",
759776
" <td>NaN</td>\n",
760777
" <td>NaN</td>\n",
761778
" <td>NaN</td>\n",
@@ -766,21 +783,21 @@
766783
"</div>"
767784
],
768785
"text/plain": [
769-
" ID DATE1 OP1 DATE2 OP2 \\\n",
770-
"0 1 2001-01-02 00:00:00 A 2015-04-25 00:00:00 B \n",
771-
"1 2 2000-04-01 00:00:00 A NaN NaN \n",
772-
"2 3 2014-04-07 00:00:00 D NaN NaN \n",
773-
"3 4 2005-06-16 00:00:00 A 2009-01-20 00:00:00 B, D \n",
774-
"4 5 2003-11-09 00:00:00 B 2010-10-10 00:00:00 A \n",
775-
"5 6 2004-01-09 00:00:00 B NaN NaN \n",
786+
" ID DATE1 OP1 DATE2 OP2 \\\n",
787+
"0 1 2001-01-02 00:00:00 ['A'] 2015-04-25 00:00:00 ['B'] \n",
788+
"1 2 2000-04-01 00:00:00 ['A'] NaN NaN \n",
789+
"2 3 2014-04-07 00:00:00 ['D'] NaN NaN \n",
790+
"3 4 2005-06-16 00:00:00 ['A'] 2009-01-20 00:00:00 ['B', 'D'] \n",
791+
"4 5 2003-11-09 00:00:00 ['B'] 2010-10-10 00:00:00 ['A'] \n",
792+
"5 6 2004-01-09 00:00:00 ['B'] NaN NaN \n",
776793
"\n",
777-
" DATE3 OP3 \n",
778-
"0 NaN NaN \n",
779-
"1 NaN NaN \n",
780-
"2 NaN NaN \n",
781-
"3 2012-12-01 00:00:00 C \n",
782-
"4 NaN NaN \n",
783-
"5 NaN NaN "
794+
" DATE3 OP3 \n",
795+
"0 NaN NaN \n",
796+
"1 NaN NaN \n",
797+
"2 NaN NaN \n",
798+
"3 2012-12-01 00:00:00 ['C'] \n",
799+
"4 NaN NaN \n",
800+
"5 NaN NaN "
784801
]
785802
},
786803
"execution_count": 8,
@@ -850,17 +867,17 @@
850867
" <th>0</th>\n",
851868
" <td>1</td>\n",
852869
" <td>2001-01-02 00:00:00</td>\n",
853-
" <td>A</td>\n",
870+
" <td>['A']</td>\n",
854871
" <td>2015-04-25 00:00:00</td>\n",
855-
" <td>B</td>\n",
872+
" <td>['B']</td>\n",
856873
" <td>NaN</td>\n",
857874
" <td>NaN</td>\n",
858875
" </tr>\n",
859876
" <tr>\n",
860877
" <th>1</th>\n",
861878
" <td>2</td>\n",
862879
" <td>2000-04-01 00:00:00</td>\n",
863-
" <td>A</td>\n",
880+
" <td>['A']</td>\n",
864881
" <td>NaN</td>\n",
865882
" <td>NaN</td>\n",
866883
" <td>NaN</td>\n",
@@ -870,7 +887,7 @@
870887
" <th>2</th>\n",
871888
" <td>3</td>\n",
872889
" <td>2014-04-07 00:00:00</td>\n",
873-
" <td>D</td>\n",
890+
" <td>['D']</td>\n",
874891
" <td>NaN</td>\n",
875892
" <td>NaN</td>\n",
876893
" <td>NaN</td>\n",
@@ -880,27 +897,27 @@
880897
" <th>3</th>\n",
881898
" <td>4</td>\n",
882899
" <td>2005-06-16 00:00:00</td>\n",
883-
" <td>A</td>\n",
900+
" <td>['A']</td>\n",
884901
" <td>2009-01-20 00:00:00</td>\n",
885-
" <td>B, D</td>\n",
902+
" <td>['B', 'D']</td>\n",
886903
" <td>2012-12-01 00:00:00</td>\n",
887-
" <td>C</td>\n",
904+
" <td>['C']</td>\n",
888905
" </tr>\n",
889906
" <tr>\n",
890907
" <th>4</th>\n",
891908
" <td>5</td>\n",
892909
" <td>2003-11-09 00:00:00</td>\n",
893-
" <td>B</td>\n",
910+
" <td>['B']</td>\n",
894911
" <td>2010-10-10 00:00:00</td>\n",
895-
" <td>A</td>\n",
912+
" <td>['A']</td>\n",
896913
" <td>NaN</td>\n",
897914
" <td>NaN</td>\n",
898915
" </tr>\n",
899916
" <tr>\n",
900917
" <th>5</th>\n",
901918
" <td>6</td>\n",
902919
" <td>2004-01-09 00:00:00</td>\n",
903-
" <td>B</td>\n",
920+
" <td>['B']</td>\n",
904921
" <td>NaN</td>\n",
905922
" <td>NaN</td>\n",
906923
" <td>NaN</td>\n",
@@ -911,21 +928,21 @@
911928
"</div>"
912929
],
913930
"text/plain": [
914-
" ID DATE1 OP1 DATE2 OP2 \\\n",
915-
"0 1 2001-01-02 00:00:00 A 2015-04-25 00:00:00 B \n",
916-
"1 2 2000-04-01 00:00:00 A NaN NaN \n",
917-
"2 3 2014-04-07 00:00:00 D NaN NaN \n",
918-
"3 4 2005-06-16 00:00:00 A 2009-01-20 00:00:00 B, D \n",
919-
"4 5 2003-11-09 00:00:00 B 2010-10-10 00:00:00 A \n",
920-
"5 6 2004-01-09 00:00:00 B NaN NaN \n",
931+
" ID DATE1 OP1 DATE2 OP2 \\\n",
932+
"0 1 2001-01-02 00:00:00 ['A'] 2015-04-25 00:00:00 ['B'] \n",
933+
"1 2 2000-04-01 00:00:00 ['A'] NaN NaN \n",
934+
"2 3 2014-04-07 00:00:00 ['D'] NaN NaN \n",
935+
"3 4 2005-06-16 00:00:00 ['A'] 2009-01-20 00:00:00 ['B', 'D'] \n",
936+
"4 5 2003-11-09 00:00:00 ['B'] 2010-10-10 00:00:00 ['A'] \n",
937+
"5 6 2004-01-09 00:00:00 ['B'] NaN NaN \n",
921938
"\n",
922-
" DATE3 OP3 \n",
923-
"0 NaN NaN \n",
924-
"1 NaN NaN \n",
925-
"2 NaN NaN \n",
926-
"3 2012-12-01 00:00:00 C \n",
927-
"4 NaN NaN \n",
928-
"5 NaN NaN "
939+
" DATE3 OP3 \n",
940+
"0 NaN NaN \n",
941+
"1 NaN NaN \n",
942+
"2 NaN NaN \n",
943+
"3 2012-12-01 00:00:00 ['C'] \n",
944+
"4 NaN NaN \n",
945+
"5 NaN NaN "
929946
]
930947
},
931948
"execution_count": 9,

0 commit comments

Comments
 (0)