small-fish-gui 1.8.0__py3-none-any.whl → 1.9.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2067 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# Testing cell_colocalisation_frame building\n",
8
+ "for _colocalisation._cell_coloc"
9
+ ]
10
+ },
11
+ {
12
+ "cell_type": "code",
13
+ "execution_count": 194,
14
+ "metadata": {},
15
+ "outputs": [],
16
+ "source": [
17
+ "import numpy as np\n",
18
+ "import pandas as pd"
19
+ ]
20
+ },
21
+ {
22
+ "cell_type": "markdown",
23
+ "metadata": {},
24
+ "source": [
25
+ "## Creating spots to test coloc"
26
+ ]
27
+ },
28
+ {
29
+ "cell_type": "code",
30
+ "execution_count": 195,
31
+ "metadata": {},
32
+ "outputs": [],
33
+ "source": [
34
+ "im_shape = (3,50,50)\n",
35
+ "dim = len(im_shape)\n",
36
+ "spot_number = 1000\n",
37
+ "SEED = 1\n",
38
+ "random_gen = np.random.default_rng(seed=SEED)\n",
39
+ "voxel_size = (3,1,1)\n",
40
+ "coloc_distance = 3\n",
41
+ "\n",
42
+ "spots1 = random_gen.integers([0]*dim, im_shape, (spot_number, dim))\n",
43
+ "spots2 = random_gen.integers([0]*dim, im_shape, (spot_number, dim))"
44
+ ]
45
+ },
46
+ {
47
+ "cell_type": "markdown",
48
+ "metadata": {},
49
+ "source": [
50
+ "## Creating fake cell ids and cluster ids"
51
+ ]
52
+ },
53
+ {
54
+ "cell_type": "code",
55
+ "execution_count": 196,
56
+ "metadata": {},
57
+ "outputs": [],
58
+ "source": [
59
+ "CELL_NUMBER = 10\n",
60
+ "cell_ids1 = random_gen.integers(0, CELL_NUMBER, spot_number)\n",
61
+ "cell_ids2 = random_gen.integers(0, CELL_NUMBER, spot_number)\n",
62
+ "\n",
63
+ "CLUSTER_PROPORTION = 0.10\n",
64
+ "cluster_id1 = random_gen.uniform(size=spot_number)\n",
65
+ "cluster_id2 = random_gen.uniform(size=spot_number)\n",
66
+ "\n",
67
+ "cutoff = int(spot_number*CLUSTER_PROPORTION)\n",
68
+ "cluster_id1[:cutoff] = 1 # should not be necessary for test to differentiate clusters\n",
69
+ "cluster_id1[cutoff:] = -1 # free spots\n",
70
+ "\n",
71
+ "cluster_id2[:cutoff] = 1 # should not be necessary for test to differentiate clusters\n",
72
+ "cluster_id2[cutoff:] = -1 # free spots\n"
73
+ ]
74
+ },
75
+ {
76
+ "cell_type": "code",
77
+ "execution_count": 197,
78
+ "metadata": {},
79
+ "outputs": [],
80
+ "source": [
81
+ "assert any(cluster_id1 == 1)\n",
82
+ "assert any(cluster_id2 == 1)"
83
+ ]
84
+ },
85
+ {
86
+ "cell_type": "markdown",
87
+ "metadata": {},
88
+ "source": [
89
+ "## Creating df"
90
+ ]
91
+ },
92
+ {
93
+ "cell_type": "code",
94
+ "execution_count": 198,
95
+ "metadata": {},
96
+ "outputs": [],
97
+ "source": [
98
+ "#Fake names\n",
99
+ "acquisition_id1 = 1\n",
100
+ "acquisition_id2 = 2\n",
101
+ "acquisition_name1 = \"Cy3\"\n",
102
+ "acquisition_name2 = \"Cy5\""
103
+ ]
104
+ },
105
+ {
106
+ "cell_type": "markdown",
107
+ "metadata": {},
108
+ "source": [
109
+ "### Spots DF"
110
+ ]
111
+ },
112
+ {
113
+ "cell_type": "code",
114
+ "execution_count": 199,
115
+ "metadata": {},
116
+ "outputs": [
117
+ {
118
+ "data": {
119
+ "text/html": [
120
+ "<div>\n",
121
+ "<style scoped>\n",
122
+ " .dataframe tbody tr th:only-of-type {\n",
123
+ " vertical-align: middle;\n",
124
+ " }\n",
125
+ "\n",
126
+ " .dataframe tbody tr th {\n",
127
+ " vertical-align: top;\n",
128
+ " }\n",
129
+ "\n",
130
+ " .dataframe thead th {\n",
131
+ " text-align: right;\n",
132
+ " }\n",
133
+ "</style>\n",
134
+ "<table border=\"1\" class=\"dataframe\">\n",
135
+ " <thead>\n",
136
+ " <tr style=\"text-align: right;\">\n",
137
+ " <th></th>\n",
138
+ " <th>spots_id</th>\n",
139
+ " <th>name</th>\n",
140
+ " <th>acquisition_id</th>\n",
141
+ " <th>cell_id</th>\n",
142
+ " <th>cluster_id</th>\n",
143
+ " <th>coordinates</th>\n",
144
+ " <th>is_clustered</th>\n",
145
+ " </tr>\n",
146
+ " </thead>\n",
147
+ " <tbody>\n",
148
+ " <tr>\n",
149
+ " <th>0</th>\n",
150
+ " <td>0</td>\n",
151
+ " <td>Cy3</td>\n",
152
+ " <td>1</td>\n",
153
+ " <td>6</td>\n",
154
+ " <td>1.0</td>\n",
155
+ " <td>(1, 25, 37)</td>\n",
156
+ " <td>True</td>\n",
157
+ " </tr>\n",
158
+ " <tr>\n",
159
+ " <th>1</th>\n",
160
+ " <td>1</td>\n",
161
+ " <td>Cy3</td>\n",
162
+ " <td>1</td>\n",
163
+ " <td>1</td>\n",
164
+ " <td>1.0</td>\n",
165
+ " <td>(2, 1, 7)</td>\n",
166
+ " <td>True</td>\n",
167
+ " </tr>\n",
168
+ " <tr>\n",
169
+ " <th>2</th>\n",
170
+ " <td>2</td>\n",
171
+ " <td>Cy3</td>\n",
172
+ " <td>1</td>\n",
173
+ " <td>7</td>\n",
174
+ " <td>1.0</td>\n",
175
+ " <td>(2, 47, 12)</td>\n",
176
+ " <td>True</td>\n",
177
+ " </tr>\n",
178
+ " <tr>\n",
179
+ " <th>3</th>\n",
180
+ " <td>3</td>\n",
181
+ " <td>Cy3</td>\n",
182
+ " <td>1</td>\n",
183
+ " <td>8</td>\n",
184
+ " <td>1.0</td>\n",
185
+ " <td>(0, 43, 21)</td>\n",
186
+ " <td>True</td>\n",
187
+ " </tr>\n",
188
+ " <tr>\n",
189
+ " <th>4</th>\n",
190
+ " <td>4</td>\n",
191
+ " <td>Cy3</td>\n",
192
+ " <td>1</td>\n",
193
+ " <td>3</td>\n",
194
+ " <td>1.0</td>\n",
195
+ " <td>(0, 41, 12)</td>\n",
196
+ " <td>True</td>\n",
197
+ " </tr>\n",
198
+ " <tr>\n",
199
+ " <th>...</th>\n",
200
+ " <td>...</td>\n",
201
+ " <td>...</td>\n",
202
+ " <td>...</td>\n",
203
+ " <td>...</td>\n",
204
+ " <td>...</td>\n",
205
+ " <td>...</td>\n",
206
+ " <td>...</td>\n",
207
+ " </tr>\n",
208
+ " <tr>\n",
209
+ " <th>1995</th>\n",
210
+ " <td>1995</td>\n",
211
+ " <td>Cy5</td>\n",
212
+ " <td>2</td>\n",
213
+ " <td>4</td>\n",
214
+ " <td>-1.0</td>\n",
215
+ " <td>(2, 8, 41)</td>\n",
216
+ " <td>False</td>\n",
217
+ " </tr>\n",
218
+ " <tr>\n",
219
+ " <th>1996</th>\n",
220
+ " <td>1996</td>\n",
221
+ " <td>Cy5</td>\n",
222
+ " <td>2</td>\n",
223
+ " <td>3</td>\n",
224
+ " <td>-1.0</td>\n",
225
+ " <td>(2, 1, 25)</td>\n",
226
+ " <td>False</td>\n",
227
+ " </tr>\n",
228
+ " <tr>\n",
229
+ " <th>1997</th>\n",
230
+ " <td>1997</td>\n",
231
+ " <td>Cy5</td>\n",
232
+ " <td>2</td>\n",
233
+ " <td>4</td>\n",
234
+ " <td>-1.0</td>\n",
235
+ " <td>(0, 45, 48)</td>\n",
236
+ " <td>False</td>\n",
237
+ " </tr>\n",
238
+ " <tr>\n",
239
+ " <th>1998</th>\n",
240
+ " <td>1998</td>\n",
241
+ " <td>Cy5</td>\n",
242
+ " <td>2</td>\n",
243
+ " <td>9</td>\n",
244
+ " <td>-1.0</td>\n",
245
+ " <td>(0, 27, 19)</td>\n",
246
+ " <td>False</td>\n",
247
+ " </tr>\n",
248
+ " <tr>\n",
249
+ " <th>1999</th>\n",
250
+ " <td>1999</td>\n",
251
+ " <td>Cy5</td>\n",
252
+ " <td>2</td>\n",
253
+ " <td>6</td>\n",
254
+ " <td>-1.0</td>\n",
255
+ " <td>(0, 27, 0)</td>\n",
256
+ " <td>False</td>\n",
257
+ " </tr>\n",
258
+ " </tbody>\n",
259
+ "</table>\n",
260
+ "<p>2000 rows × 7 columns</p>\n",
261
+ "</div>"
262
+ ],
263
+ "text/plain": [
264
+ " spots_id name acquisition_id cell_id cluster_id coordinates \\\n",
265
+ "0 0 Cy3 1 6 1.0 (1, 25, 37) \n",
266
+ "1 1 Cy3 1 1 1.0 (2, 1, 7) \n",
267
+ "2 2 Cy3 1 7 1.0 (2, 47, 12) \n",
268
+ "3 3 Cy3 1 8 1.0 (0, 43, 21) \n",
269
+ "4 4 Cy3 1 3 1.0 (0, 41, 12) \n",
270
+ "... ... ... ... ... ... ... \n",
271
+ "1995 1995 Cy5 2 4 -1.0 (2, 8, 41) \n",
272
+ "1996 1996 Cy5 2 3 -1.0 (2, 1, 25) \n",
273
+ "1997 1997 Cy5 2 4 -1.0 (0, 45, 48) \n",
274
+ "1998 1998 Cy5 2 9 -1.0 (0, 27, 19) \n",
275
+ "1999 1999 Cy5 2 6 -1.0 (0, 27, 0) \n",
276
+ "\n",
277
+ " is_clustered \n",
278
+ "0 True \n",
279
+ "1 True \n",
280
+ "2 True \n",
281
+ "3 True \n",
282
+ "4 True \n",
283
+ "... ... \n",
284
+ "1995 False \n",
285
+ "1996 False \n",
286
+ "1997 False \n",
287
+ "1998 False \n",
288
+ "1999 False \n",
289
+ "\n",
290
+ "[2000 rows x 7 columns]"
291
+ ]
292
+ },
293
+ "execution_count": 199,
294
+ "metadata": {},
295
+ "output_type": "execute_result"
296
+ }
297
+ ],
298
+ "source": [
299
+ "coordinates = np.concatenate([spots1,spots2],axis=0)\n",
300
+ "z,y,x = list(zip(*coordinates))\n",
301
+ "\n",
302
+ "spots_df = pd.DataFrame({\n",
303
+ " 'spots_id' : np.arange(2*spot_number),\n",
304
+ " 'name' : [acquisition_name1] * spot_number + [acquisition_name2] * spot_number,\n",
305
+ " 'acquisition_id' : [acquisition_id1] * spot_number + [acquisition_id2] * spot_number,\n",
306
+ " 'cell_id' : np.concatenate([cell_ids1,cell_ids2]),\n",
307
+ " 'cluster_id' : np.concatenate([cluster_id1, cluster_id2]),\n",
308
+ " 'z' : z,\n",
309
+ " 'y' : y,\n",
310
+ " 'x' : x, \n",
311
+ "})\n",
312
+ "spots_df['coordinates'] = list(zip(spots_df['z'], spots_df['y'], spots_df['x']))\n",
313
+ "spots_df['is_clustered'] = spots_df['cluster_id'] != -1\n",
314
+ "spots_df = spots_df.drop(columns=['z','y','x'])\n",
315
+ "spots_df"
316
+ ]
317
+ },
318
+ {
319
+ "cell_type": "markdown",
320
+ "metadata": {},
321
+ "source": [
322
+ "### Cell Df"
323
+ ]
324
+ },
325
+ {
326
+ "cell_type": "code",
327
+ "execution_count": 200,
328
+ "metadata": {},
329
+ "outputs": [
330
+ {
331
+ "data": {
332
+ "text/html": [
333
+ "<div>\n",
334
+ "<style scoped>\n",
335
+ " .dataframe tbody tr th:only-of-type {\n",
336
+ " vertical-align: middle;\n",
337
+ " }\n",
338
+ "\n",
339
+ " .dataframe tbody tr th {\n",
340
+ " vertical-align: top;\n",
341
+ " }\n",
342
+ "\n",
343
+ " .dataframe thead th {\n",
344
+ " text-align: right;\n",
345
+ " }\n",
346
+ "</style>\n",
347
+ "<table border=\"1\" class=\"dataframe\">\n",
348
+ " <thead>\n",
349
+ " <tr style=\"text-align: right;\">\n",
350
+ " <th></th>\n",
351
+ " <th>name</th>\n",
352
+ " <th>acquisition_id</th>\n",
353
+ " <th>cell_id</th>\n",
354
+ " <th>all_spots</th>\n",
355
+ " <th>total_rna_number</th>\n",
356
+ " <th>clustered_spots</th>\n",
357
+ " <th>clustered_spot_number</th>\n",
358
+ " <th>free_spots</th>\n",
359
+ " <th>free_spot_number</th>\n",
360
+ " </tr>\n",
361
+ " </thead>\n",
362
+ " <tbody>\n",
363
+ " <tr>\n",
364
+ " <th>0</th>\n",
365
+ " <td>Cy3</td>\n",
366
+ " <td>1</td>\n",
367
+ " <td>0</td>\n",
368
+ " <td>[(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4...</td>\n",
369
+ " <td>101</td>\n",
370
+ " <td>[(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4...</td>\n",
371
+ " <td>8</td>\n",
372
+ " <td>[(2, 9, 46), (1, 15, 7), (0, 30, 11), (0, 14, ...</td>\n",
373
+ " <td>93</td>\n",
374
+ " </tr>\n",
375
+ " <tr>\n",
376
+ " <th>1</th>\n",
377
+ " <td>Cy3</td>\n",
378
+ " <td>1</td>\n",
379
+ " <td>1</td>\n",
380
+ " <td>[(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ...</td>\n",
381
+ " <td>110</td>\n",
382
+ " <td>[(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ...</td>\n",
383
+ " <td>11</td>\n",
384
+ " <td>[(2, 10, 1), (1, 32, 19), (1, 1, 0), (0, 24, 2...</td>\n",
385
+ " <td>99</td>\n",
386
+ " </tr>\n",
387
+ " <tr>\n",
388
+ " <th>2</th>\n",
389
+ " <td>Cy3</td>\n",
390
+ " <td>1</td>\n",
391
+ " <td>2</td>\n",
392
+ " <td>[(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,...</td>\n",
393
+ " <td>93</td>\n",
394
+ " <td>[(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,...</td>\n",
395
+ " <td>9</td>\n",
396
+ " <td>[(0, 48, 36), (1, 48, 48), (2, 33, 37), (1, 19...</td>\n",
397
+ " <td>84</td>\n",
398
+ " </tr>\n",
399
+ " <tr>\n",
400
+ " <th>3</th>\n",
401
+ " <td>Cy3</td>\n",
402
+ " <td>1</td>\n",
403
+ " <td>3</td>\n",
404
+ " <td>[(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,...</td>\n",
405
+ " <td>106</td>\n",
406
+ " <td>[(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,...</td>\n",
407
+ " <td>7</td>\n",
408
+ " <td>[(1, 42, 40), (0, 39, 15), (0, 37, 9), (0, 47,...</td>\n",
409
+ " <td>99</td>\n",
410
+ " </tr>\n",
411
+ " <tr>\n",
412
+ " <th>4</th>\n",
413
+ " <td>Cy3</td>\n",
414
+ " <td>1</td>\n",
415
+ " <td>4</td>\n",
416
+ " <td>[(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43...</td>\n",
417
+ " <td>98</td>\n",
418
+ " <td>[(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43...</td>\n",
419
+ " <td>11</td>\n",
420
+ " <td>[(1, 45, 19), (1, 1, 46), (0, 40, 37), (0, 10,...</td>\n",
421
+ " <td>87</td>\n",
422
+ " </tr>\n",
423
+ " <tr>\n",
424
+ " <th>5</th>\n",
425
+ " <td>Cy3</td>\n",
426
+ " <td>1</td>\n",
427
+ " <td>5</td>\n",
428
+ " <td>[(0, 21, 23), (0, 15, 35), (2, 17, 43), (0, 11...</td>\n",
429
+ " <td>87</td>\n",
430
+ " <td>[(0, 21, 23), (0, 15, 35)]</td>\n",
431
+ " <td>2</td>\n",
432
+ " <td>[(2, 17, 43), (0, 11, 42), (1, 18, 47), (0, 7,...</td>\n",
433
+ " <td>85</td>\n",
434
+ " </tr>\n",
435
+ " <tr>\n",
436
+ " <th>6</th>\n",
437
+ " <td>Cy3</td>\n",
438
+ " <td>1</td>\n",
439
+ " <td>6</td>\n",
440
+ " <td>[(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10...</td>\n",
441
+ " <td>106</td>\n",
442
+ " <td>[(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10...</td>\n",
443
+ " <td>10</td>\n",
444
+ " <td>[(1, 34, 47), (0, 22, 23), (2, 39, 12), (1, 42...</td>\n",
445
+ " <td>96</td>\n",
446
+ " </tr>\n",
447
+ " <tr>\n",
448
+ " <th>7</th>\n",
449
+ " <td>Cy3</td>\n",
450
+ " <td>1</td>\n",
451
+ " <td>7</td>\n",
452
+ " <td>[(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ...</td>\n",
453
+ " <td>91</td>\n",
454
+ " <td>[(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ...</td>\n",
455
+ " <td>12</td>\n",
456
+ " <td>[(1, 36, 14), (1, 47, 11), (0, 31, 40), (1, 28...</td>\n",
457
+ " <td>79</td>\n",
458
+ " </tr>\n",
459
+ " <tr>\n",
460
+ " <th>8</th>\n",
461
+ " <td>Cy3</td>\n",
462
+ " <td>1</td>\n",
463
+ " <td>8</td>\n",
464
+ " <td>[(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,...</td>\n",
465
+ " <td>108</td>\n",
466
+ " <td>[(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,...</td>\n",
467
+ " <td>13</td>\n",
468
+ " <td>[(0, 42, 29), (2, 30, 26), (1, 49, 19), (2, 19...</td>\n",
469
+ " <td>95</td>\n",
470
+ " </tr>\n",
471
+ " <tr>\n",
472
+ " <th>9</th>\n",
473
+ " <td>Cy3</td>\n",
474
+ " <td>1</td>\n",
475
+ " <td>9</td>\n",
476
+ " <td>[(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ...</td>\n",
477
+ " <td>100</td>\n",
478
+ " <td>[(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ...</td>\n",
479
+ " <td>17</td>\n",
480
+ " <td>[(0, 48, 24), (1, 37, 44), (1, 35, 10), (1, 49...</td>\n",
481
+ " <td>83</td>\n",
482
+ " </tr>\n",
483
+ " <tr>\n",
484
+ " <th>10</th>\n",
485
+ " <td>Cy5</td>\n",
486
+ " <td>2</td>\n",
487
+ " <td>0</td>\n",
488
+ " <td>[(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,...</td>\n",
489
+ " <td>99</td>\n",
490
+ " <td>[(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,...</td>\n",
491
+ " <td>8</td>\n",
492
+ " <td>[(0, 38, 40), (0, 1, 31), (1, 44, 0), (1, 27, ...</td>\n",
493
+ " <td>91</td>\n",
494
+ " </tr>\n",
495
+ " <tr>\n",
496
+ " <th>11</th>\n",
497
+ " <td>Cy5</td>\n",
498
+ " <td>2</td>\n",
499
+ " <td>1</td>\n",
500
+ " <td>[(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44...</td>\n",
501
+ " <td>89</td>\n",
502
+ " <td>[(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44...</td>\n",
503
+ " <td>7</td>\n",
504
+ " <td>[(0, 20, 39), (0, 43, 45), (2, 17, 32), (2, 35...</td>\n",
505
+ " <td>82</td>\n",
506
+ " </tr>\n",
507
+ " <tr>\n",
508
+ " <th>12</th>\n",
509
+ " <td>Cy5</td>\n",
510
+ " <td>2</td>\n",
511
+ " <td>2</td>\n",
512
+ " <td>[(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19...</td>\n",
513
+ " <td>111</td>\n",
514
+ " <td>[(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19...</td>\n",
515
+ " <td>12</td>\n",
516
+ " <td>[(2, 10, 7), (0, 27, 49), (0, 13, 11), (2, 1, ...</td>\n",
517
+ " <td>99</td>\n",
518
+ " </tr>\n",
519
+ " <tr>\n",
520
+ " <th>13</th>\n",
521
+ " <td>Cy5</td>\n",
522
+ " <td>2</td>\n",
523
+ " <td>3</td>\n",
524
+ " <td>[(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,...</td>\n",
525
+ " <td>92</td>\n",
526
+ " <td>[(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,...</td>\n",
527
+ " <td>10</td>\n",
528
+ " <td>[(2, 3, 20), (0, 0, 18), (0, 22, 16), (0, 23, ...</td>\n",
529
+ " <td>82</td>\n",
530
+ " </tr>\n",
531
+ " <tr>\n",
532
+ " <th>14</th>\n",
533
+ " <td>Cy5</td>\n",
534
+ " <td>2</td>\n",
535
+ " <td>4</td>\n",
536
+ " <td>[(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,...</td>\n",
537
+ " <td>97</td>\n",
538
+ " <td>[(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,...</td>\n",
539
+ " <td>8</td>\n",
540
+ " <td>[(1, 45, 8), (0, 16, 43), (0, 14, 17), (1, 39,...</td>\n",
541
+ " <td>89</td>\n",
542
+ " </tr>\n",
543
+ " <tr>\n",
544
+ " <th>15</th>\n",
545
+ " <td>Cy5</td>\n",
546
+ " <td>2</td>\n",
547
+ " <td>5</td>\n",
548
+ " <td>[(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40...</td>\n",
549
+ " <td>95</td>\n",
550
+ " <td>[(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40...</td>\n",
551
+ " <td>11</td>\n",
552
+ " <td>[(1, 40, 7), (0, 19, 47), (0, 21, 21), (1, 21,...</td>\n",
553
+ " <td>84</td>\n",
554
+ " </tr>\n",
555
+ " <tr>\n",
556
+ " <th>16</th>\n",
557
+ " <td>Cy5</td>\n",
558
+ " <td>2</td>\n",
559
+ " <td>6</td>\n",
560
+ " <td>[(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,...</td>\n",
561
+ " <td>115</td>\n",
562
+ " <td>[(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,...</td>\n",
563
+ " <td>13</td>\n",
564
+ " <td>[(1, 14, 10), (0, 48, 23), (1, 20, 10), (2, 16...</td>\n",
565
+ " <td>102</td>\n",
566
+ " </tr>\n",
567
+ " <tr>\n",
568
+ " <th>17</th>\n",
569
+ " <td>Cy5</td>\n",
570
+ " <td>2</td>\n",
571
+ " <td>7</td>\n",
572
+ " <td>[(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39...</td>\n",
573
+ " <td>102</td>\n",
574
+ " <td>[(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39...</td>\n",
575
+ " <td>10</td>\n",
576
+ " <td>[(2, 15, 14), (1, 34, 47), (2, 17, 9), (1, 3, ...</td>\n",
577
+ " <td>92</td>\n",
578
+ " </tr>\n",
579
+ " <tr>\n",
580
+ " <th>18</th>\n",
581
+ " <td>Cy5</td>\n",
582
+ " <td>2</td>\n",
583
+ " <td>8</td>\n",
584
+ " <td>[(2, 34, 13), (1, 44, 24), (0, 44, 49), (1, 19...</td>\n",
585
+ " <td>91</td>\n",
586
+ " <td>[(2, 34, 13), (1, 44, 24), (0, 44, 49)]</td>\n",
587
+ " <td>3</td>\n",
588
+ " <td>[(1, 19, 32), (0, 46, 40), (1, 7, 17), (2, 11,...</td>\n",
589
+ " <td>88</td>\n",
590
+ " </tr>\n",
591
+ " <tr>\n",
592
+ " <th>19</th>\n",
593
+ " <td>Cy5</td>\n",
594
+ " <td>2</td>\n",
595
+ " <td>9</td>\n",
596
+ " <td>[(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0...</td>\n",
597
+ " <td>109</td>\n",
598
+ " <td>[(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0...</td>\n",
599
+ " <td>18</td>\n",
600
+ " <td>[(1, 28, 35), (2, 27, 28), (1, 16, 32), (2, 22...</td>\n",
601
+ " <td>91</td>\n",
602
+ " </tr>\n",
603
+ " </tbody>\n",
604
+ "</table>\n",
605
+ "</div>"
606
+ ],
607
+ "text/plain": [
608
+ " name acquisition_id cell_id \\\n",
609
+ "0 Cy3 1 0 \n",
610
+ "1 Cy3 1 1 \n",
611
+ "2 Cy3 1 2 \n",
612
+ "3 Cy3 1 3 \n",
613
+ "4 Cy3 1 4 \n",
614
+ "5 Cy3 1 5 \n",
615
+ "6 Cy3 1 6 \n",
616
+ "7 Cy3 1 7 \n",
617
+ "8 Cy3 1 8 \n",
618
+ "9 Cy3 1 9 \n",
619
+ "10 Cy5 2 0 \n",
620
+ "11 Cy5 2 1 \n",
621
+ "12 Cy5 2 2 \n",
622
+ "13 Cy5 2 3 \n",
623
+ "14 Cy5 2 4 \n",
624
+ "15 Cy5 2 5 \n",
625
+ "16 Cy5 2 6 \n",
626
+ "17 Cy5 2 7 \n",
627
+ "18 Cy5 2 8 \n",
628
+ "19 Cy5 2 9 \n",
629
+ "\n",
630
+ " all_spots total_rna_number \\\n",
631
+ "0 [(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4... 101 \n",
632
+ "1 [(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ... 110 \n",
633
+ "2 [(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,... 93 \n",
634
+ "3 [(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,... 106 \n",
635
+ "4 [(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43... 98 \n",
636
+ "5 [(0, 21, 23), (0, 15, 35), (2, 17, 43), (0, 11... 87 \n",
637
+ "6 [(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10... 106 \n",
638
+ "7 [(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ... 91 \n",
639
+ "8 [(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,... 108 \n",
640
+ "9 [(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ... 100 \n",
641
+ "10 [(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,... 99 \n",
642
+ "11 [(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44... 89 \n",
643
+ "12 [(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19... 111 \n",
644
+ "13 [(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,... 92 \n",
645
+ "14 [(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,... 97 \n",
646
+ "15 [(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40... 95 \n",
647
+ "16 [(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,... 115 \n",
648
+ "17 [(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39... 102 \n",
649
+ "18 [(2, 34, 13), (1, 44, 24), (0, 44, 49), (1, 19... 91 \n",
650
+ "19 [(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0... 109 \n",
651
+ "\n",
652
+ " clustered_spots clustered_spot_number \\\n",
653
+ "0 [(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4... 8 \n",
654
+ "1 [(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ... 11 \n",
655
+ "2 [(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,... 9 \n",
656
+ "3 [(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,... 7 \n",
657
+ "4 [(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43... 11 \n",
658
+ "5 [(0, 21, 23), (0, 15, 35)] 2 \n",
659
+ "6 [(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10... 10 \n",
660
+ "7 [(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ... 12 \n",
661
+ "8 [(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,... 13 \n",
662
+ "9 [(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ... 17 \n",
663
+ "10 [(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,... 8 \n",
664
+ "11 [(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44... 7 \n",
665
+ "12 [(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19... 12 \n",
666
+ "13 [(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,... 10 \n",
667
+ "14 [(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,... 8 \n",
668
+ "15 [(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40... 11 \n",
669
+ "16 [(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,... 13 \n",
670
+ "17 [(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39... 10 \n",
671
+ "18 [(2, 34, 13), (1, 44, 24), (0, 44, 49)] 3 \n",
672
+ "19 [(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0... 18 \n",
673
+ "\n",
674
+ " free_spots free_spot_number \n",
675
+ "0 [(2, 9, 46), (1, 15, 7), (0, 30, 11), (0, 14, ... 93 \n",
676
+ "1 [(2, 10, 1), (1, 32, 19), (1, 1, 0), (0, 24, 2... 99 \n",
677
+ "2 [(0, 48, 36), (1, 48, 48), (2, 33, 37), (1, 19... 84 \n",
678
+ "3 [(1, 42, 40), (0, 39, 15), (0, 37, 9), (0, 47,... 99 \n",
679
+ "4 [(1, 45, 19), (1, 1, 46), (0, 40, 37), (0, 10,... 87 \n",
680
+ "5 [(2, 17, 43), (0, 11, 42), (1, 18, 47), (0, 7,... 85 \n",
681
+ "6 [(1, 34, 47), (0, 22, 23), (2, 39, 12), (1, 42... 96 \n",
682
+ "7 [(1, 36, 14), (1, 47, 11), (0, 31, 40), (1, 28... 79 \n",
683
+ "8 [(0, 42, 29), (2, 30, 26), (1, 49, 19), (2, 19... 95 \n",
684
+ "9 [(0, 48, 24), (1, 37, 44), (1, 35, 10), (1, 49... 83 \n",
685
+ "10 [(0, 38, 40), (0, 1, 31), (1, 44, 0), (1, 27, ... 91 \n",
686
+ "11 [(0, 20, 39), (0, 43, 45), (2, 17, 32), (2, 35... 82 \n",
687
+ "12 [(2, 10, 7), (0, 27, 49), (0, 13, 11), (2, 1, ... 99 \n",
688
+ "13 [(2, 3, 20), (0, 0, 18), (0, 22, 16), (0, 23, ... 82 \n",
689
+ "14 [(1, 45, 8), (0, 16, 43), (0, 14, 17), (1, 39,... 89 \n",
690
+ "15 [(1, 40, 7), (0, 19, 47), (0, 21, 21), (1, 21,... 84 \n",
691
+ "16 [(1, 14, 10), (0, 48, 23), (1, 20, 10), (2, 16... 102 \n",
692
+ "17 [(2, 15, 14), (1, 34, 47), (2, 17, 9), (1, 3, ... 92 \n",
693
+ "18 [(1, 19, 32), (0, 46, 40), (1, 7, 17), (2, 11,... 88 \n",
694
+ "19 [(1, 28, 35), (2, 27, 28), (1, 16, 32), (2, 22... 91 "
695
+ ]
696
+ },
697
+ "execution_count": 200,
698
+ "metadata": {},
699
+ "output_type": "execute_result"
700
+ }
701
+ ],
702
+ "source": [
703
+ "Cell_df_all = spots_df.groupby(['name','acquisition_id','cell_id']).agg({\n",
704
+ " 'coordinates' : list,\n",
705
+ "}).reset_index(drop=False)\n",
706
+ "\n",
707
+ "Cell_df_clustered = spots_df[spots_df['is_clustered']].groupby(['name','acquisition_id','cell_id']).agg({\n",
708
+ " 'coordinates' : list,\n",
709
+ "}).reset_index(drop=False)\n",
710
+ "\n",
711
+ "Cell_df_free = spots_df[~spots_df['is_clustered']].groupby(['name','acquisition_id','cell_id']).agg({\n",
712
+ " 'coordinates' : list,\n",
713
+ "}).reset_index(drop=False)\n",
714
+ "\n",
715
+ "Cell_df_all['total_rna_number'] = Cell_df_all['coordinates'].apply(len)\n",
716
+ "Cell_df_clustered['total_rna_number'] = Cell_df_clustered['coordinates'].apply(len)\n",
717
+ "Cell_df_free['total_rna_number'] = Cell_df_free['coordinates'].apply(len)\n",
718
+ "\n",
719
+ "INDEX_KEYS = ['name','acquisition_id','cell_id']\n",
720
+ "\n",
721
+ "Cell_df_all = Cell_df_all.rename(columns={'coordinates' : 'all_spots'}).set_index(INDEX_KEYS)\n",
722
+ "Cell_df_clustered = Cell_df_clustered.rename(columns={'coordinates' : 'clustered_spots', 'total_rna_number' : 'clustered_spot_number'}).set_index(INDEX_KEYS)\n",
723
+ "Cell_df_free = Cell_df_free.rename(columns={'coordinates' : 'free_spots', 'total_rna_number' : 'free_spot_number'}).set_index(INDEX_KEYS)\n",
724
+ "\n",
725
+ "Cell_df = Cell_df_all.join([Cell_df_clustered, Cell_df_free]).reset_index(drop=False)\n",
726
+ "Cell_df"
727
+ ]
728
+ },
729
+ {
730
+ "cell_type": "markdown",
731
+ "metadata": {},
732
+ "source": [
733
+ "### colocalisation_df"
734
+ ]
735
+ },
736
+ {
737
+ "cell_type": "code",
738
+ "execution_count": 201,
739
+ "metadata": {},
740
+ "outputs": [
741
+ {
742
+ "data": {
743
+ "text/html": [
744
+ "<div>\n",
745
+ "<style scoped>\n",
746
+ " .dataframe tbody tr th:only-of-type {\n",
747
+ " vertical-align: middle;\n",
748
+ " }\n",
749
+ "\n",
750
+ " .dataframe tbody tr th {\n",
751
+ " vertical-align: top;\n",
752
+ " }\n",
753
+ "\n",
754
+ " .dataframe thead tr th {\n",
755
+ " text-align: left;\n",
756
+ " }\n",
757
+ "\n",
758
+ " .dataframe thead tr:last-of-type th {\n",
759
+ " text-align: right;\n",
760
+ " }\n",
761
+ "</style>\n",
762
+ "<table border=\"1\" class=\"dataframe\">\n",
763
+ " <thead>\n",
764
+ " <tr>\n",
765
+ " <th></th>\n",
766
+ " <th colspan=\"2\" halign=\"left\">all_spots</th>\n",
767
+ " <th colspan=\"2\" halign=\"left\">clustered_spots</th>\n",
768
+ " <th colspan=\"2\" halign=\"left\">free_spots</th>\n",
769
+ " <th colspan=\"2\" halign=\"left\">total_rna_number</th>\n",
770
+ " </tr>\n",
771
+ " <tr>\n",
772
+ " <th>name</th>\n",
773
+ " <th>Cy3</th>\n",
774
+ " <th>Cy5</th>\n",
775
+ " <th>Cy3</th>\n",
776
+ " <th>Cy5</th>\n",
777
+ " <th>Cy3</th>\n",
778
+ " <th>Cy5</th>\n",
779
+ " <th>Cy3</th>\n",
780
+ " <th>Cy5</th>\n",
781
+ " </tr>\n",
782
+ " <tr>\n",
783
+ " <th>acquisition_id</th>\n",
784
+ " <th>1</th>\n",
785
+ " <th>2</th>\n",
786
+ " <th>1</th>\n",
787
+ " <th>2</th>\n",
788
+ " <th>1</th>\n",
789
+ " <th>2</th>\n",
790
+ " <th>1</th>\n",
791
+ " <th>2</th>\n",
792
+ " </tr>\n",
793
+ " <tr>\n",
794
+ " <th>cell_id</th>\n",
795
+ " <th></th>\n",
796
+ " <th></th>\n",
797
+ " <th></th>\n",
798
+ " <th></th>\n",
799
+ " <th></th>\n",
800
+ " <th></th>\n",
801
+ " <th></th>\n",
802
+ " <th></th>\n",
803
+ " </tr>\n",
804
+ " </thead>\n",
805
+ " <tbody>\n",
806
+ " <tr>\n",
807
+ " <th>0</th>\n",
808
+ " <td>[(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4...</td>\n",
809
+ " <td>[(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,...</td>\n",
810
+ " <td>[(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4...</td>\n",
811
+ " <td>[(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,...</td>\n",
812
+ " <td>[(2, 9, 46), (1, 15, 7), (0, 30, 11), (0, 14, ...</td>\n",
813
+ " <td>[(0, 38, 40), (0, 1, 31), (1, 44, 0), (1, 27, ...</td>\n",
814
+ " <td>101</td>\n",
815
+ " <td>99</td>\n",
816
+ " </tr>\n",
817
+ " <tr>\n",
818
+ " <th>1</th>\n",
819
+ " <td>[(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ...</td>\n",
820
+ " <td>[(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44...</td>\n",
821
+ " <td>[(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ...</td>\n",
822
+ " <td>[(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44...</td>\n",
823
+ " <td>[(2, 10, 1), (1, 32, 19), (1, 1, 0), (0, 24, 2...</td>\n",
824
+ " <td>[(0, 20, 39), (0, 43, 45), (2, 17, 32), (2, 35...</td>\n",
825
+ " <td>110</td>\n",
826
+ " <td>89</td>\n",
827
+ " </tr>\n",
828
+ " <tr>\n",
829
+ " <th>2</th>\n",
830
+ " <td>[(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,...</td>\n",
831
+ " <td>[(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19...</td>\n",
832
+ " <td>[(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,...</td>\n",
833
+ " <td>[(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19...</td>\n",
834
+ " <td>[(0, 48, 36), (1, 48, 48), (2, 33, 37), (1, 19...</td>\n",
835
+ " <td>[(2, 10, 7), (0, 27, 49), (0, 13, 11), (2, 1, ...</td>\n",
836
+ " <td>93</td>\n",
837
+ " <td>111</td>\n",
838
+ " </tr>\n",
839
+ " <tr>\n",
840
+ " <th>3</th>\n",
841
+ " <td>[(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,...</td>\n",
842
+ " <td>[(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,...</td>\n",
843
+ " <td>[(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,...</td>\n",
844
+ " <td>[(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,...</td>\n",
845
+ " <td>[(1, 42, 40), (0, 39, 15), (0, 37, 9), (0, 47,...</td>\n",
846
+ " <td>[(2, 3, 20), (0, 0, 18), (0, 22, 16), (0, 23, ...</td>\n",
847
+ " <td>106</td>\n",
848
+ " <td>92</td>\n",
849
+ " </tr>\n",
850
+ " <tr>\n",
851
+ " <th>4</th>\n",
852
+ " <td>[(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43...</td>\n",
853
+ " <td>[(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,...</td>\n",
854
+ " <td>[(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43...</td>\n",
855
+ " <td>[(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,...</td>\n",
856
+ " <td>[(1, 45, 19), (1, 1, 46), (0, 40, 37), (0, 10,...</td>\n",
857
+ " <td>[(1, 45, 8), (0, 16, 43), (0, 14, 17), (1, 39,...</td>\n",
858
+ " <td>98</td>\n",
859
+ " <td>97</td>\n",
860
+ " </tr>\n",
861
+ " <tr>\n",
862
+ " <th>5</th>\n",
863
+ " <td>[(0, 21, 23), (0, 15, 35), (2, 17, 43), (0, 11...</td>\n",
864
+ " <td>[(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40...</td>\n",
865
+ " <td>[(0, 21, 23), (0, 15, 35)]</td>\n",
866
+ " <td>[(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40...</td>\n",
867
+ " <td>[(2, 17, 43), (0, 11, 42), (1, 18, 47), (0, 7,...</td>\n",
868
+ " <td>[(1, 40, 7), (0, 19, 47), (0, 21, 21), (1, 21,...</td>\n",
869
+ " <td>87</td>\n",
870
+ " <td>95</td>\n",
871
+ " </tr>\n",
872
+ " <tr>\n",
873
+ " <th>6</th>\n",
874
+ " <td>[(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10...</td>\n",
875
+ " <td>[(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,...</td>\n",
876
+ " <td>[(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10...</td>\n",
877
+ " <td>[(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,...</td>\n",
878
+ " <td>[(1, 34, 47), (0, 22, 23), (2, 39, 12), (1, 42...</td>\n",
879
+ " <td>[(1, 14, 10), (0, 48, 23), (1, 20, 10), (2, 16...</td>\n",
880
+ " <td>106</td>\n",
881
+ " <td>115</td>\n",
882
+ " </tr>\n",
883
+ " <tr>\n",
884
+ " <th>7</th>\n",
885
+ " <td>[(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ...</td>\n",
886
+ " <td>[(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39...</td>\n",
887
+ " <td>[(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ...</td>\n",
888
+ " <td>[(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39...</td>\n",
889
+ " <td>[(1, 36, 14), (1, 47, 11), (0, 31, 40), (1, 28...</td>\n",
890
+ " <td>[(2, 15, 14), (1, 34, 47), (2, 17, 9), (1, 3, ...</td>\n",
891
+ " <td>91</td>\n",
892
+ " <td>102</td>\n",
893
+ " </tr>\n",
894
+ " <tr>\n",
895
+ " <th>8</th>\n",
896
+ " <td>[(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,...</td>\n",
897
+ " <td>[(2, 34, 13), (1, 44, 24), (0, 44, 49), (1, 19...</td>\n",
898
+ " <td>[(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,...</td>\n",
899
+ " <td>[(2, 34, 13), (1, 44, 24), (0, 44, 49)]</td>\n",
900
+ " <td>[(0, 42, 29), (2, 30, 26), (1, 49, 19), (2, 19...</td>\n",
901
+ " <td>[(1, 19, 32), (0, 46, 40), (1, 7, 17), (2, 11,...</td>\n",
902
+ " <td>108</td>\n",
903
+ " <td>91</td>\n",
904
+ " </tr>\n",
905
+ " <tr>\n",
906
+ " <th>9</th>\n",
907
+ " <td>[(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ...</td>\n",
908
+ " <td>[(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0...</td>\n",
909
+ " <td>[(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ...</td>\n",
910
+ " <td>[(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0...</td>\n",
911
+ " <td>[(0, 48, 24), (1, 37, 44), (1, 35, 10), (1, 49...</td>\n",
912
+ " <td>[(1, 28, 35), (2, 27, 28), (1, 16, 32), (2, 22...</td>\n",
913
+ " <td>100</td>\n",
914
+ " <td>109</td>\n",
915
+ " </tr>\n",
916
+ " </tbody>\n",
917
+ "</table>\n",
918
+ "</div>"
919
+ ],
920
+ "text/plain": [
921
+ " all_spots \\\n",
922
+ "name Cy3 \n",
923
+ "acquisition_id 1 \n",
924
+ "cell_id \n",
925
+ "0 [(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4... \n",
926
+ "1 [(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ... \n",
927
+ "2 [(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,... \n",
928
+ "3 [(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,... \n",
929
+ "4 [(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43... \n",
930
+ "5 [(0, 21, 23), (0, 15, 35), (2, 17, 43), (0, 11... \n",
931
+ "6 [(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10... \n",
932
+ "7 [(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ... \n",
933
+ "8 [(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,... \n",
934
+ "9 [(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ... \n",
935
+ "\n",
936
+ " \\\n",
937
+ "name Cy5 \n",
938
+ "acquisition_id 2 \n",
939
+ "cell_id \n",
940
+ "0 [(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,... \n",
941
+ "1 [(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44... \n",
942
+ "2 [(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19... \n",
943
+ "3 [(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,... \n",
944
+ "4 [(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,... \n",
945
+ "5 [(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40... \n",
946
+ "6 [(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,... \n",
947
+ "7 [(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39... \n",
948
+ "8 [(2, 34, 13), (1, 44, 24), (0, 44, 49), (1, 19... \n",
949
+ "9 [(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0... \n",
950
+ "\n",
951
+ " clustered_spots \\\n",
952
+ "name Cy3 \n",
953
+ "acquisition_id 1 \n",
954
+ "cell_id \n",
955
+ "0 [(0, 1, 43), (2, 48, 4), (1, 1, 35), (0, 29, 4... \n",
956
+ "1 [(2, 1, 7), (2, 14, 27), (0, 16, 48), (0, 41, ... \n",
957
+ "2 [(1, 32, 27), (1, 9, 23), (2, 15, 23), (2, 48,... \n",
958
+ "3 [(0, 41, 12), (0, 19, 20), (1, 38, 18), (1, 5,... \n",
959
+ "4 [(1, 49, 37), (2, 39, 43), (0, 10, 42), (2, 43... \n",
960
+ "5 [(0, 21, 23), (0, 15, 35)] \n",
961
+ "6 [(1, 25, 37), (2, 16, 22), (0, 22, 48), (2, 10... \n",
962
+ "7 [(2, 47, 12), (2, 41, 26), (1, 3, 22), (0, 7, ... \n",
963
+ "8 [(0, 43, 21), (1, 5, 49), (2, 13, 36), (1, 38,... \n",
964
+ "9 [(2, 6, 15), (0, 0, 37), (0, 14, 24), (0, 21, ... \n",
965
+ "\n",
966
+ " \\\n",
967
+ "name Cy5 \n",
968
+ "acquisition_id 2 \n",
969
+ "cell_id \n",
970
+ "0 [(2, 39, 9), (0, 40, 29), (1, 12, 33), (1, 31,... \n",
971
+ "1 [(1, 28, 15), (2, 14, 39), (1, 15, 45), (1, 44... \n",
972
+ "2 [(2, 25, 41), (0, 47, 29), (1, 15, 11), (0, 19... \n",
973
+ "3 [(2, 12, 49), (2, 11, 3), (1, 49, 34), (2, 18,... \n",
974
+ "4 [(1, 31, 16), (0, 2, 46), (0, 10, 33), (2, 36,... \n",
975
+ "5 [(2, 30, 35), (0, 24, 18), (1, 14, 15), (2, 40... \n",
976
+ "6 [(1, 30, 27), (0, 23, 5), (0, 14, 29), (2, 30,... \n",
977
+ "7 [(2, 13, 25), (1, 29, 49), (2, 22, 44), (1, 39... \n",
978
+ "8 [(2, 34, 13), (1, 44, 24), (0, 44, 49)] \n",
979
+ "9 [(2, 21, 4), (1, 2, 18), (1, 10, 0), (0, 34, 0... \n",
980
+ "\n",
981
+ " free_spots \\\n",
982
+ "name Cy3 \n",
983
+ "acquisition_id 1 \n",
984
+ "cell_id \n",
985
+ "0 [(2, 9, 46), (1, 15, 7), (0, 30, 11), (0, 14, ... \n",
986
+ "1 [(2, 10, 1), (1, 32, 19), (1, 1, 0), (0, 24, 2... \n",
987
+ "2 [(0, 48, 36), (1, 48, 48), (2, 33, 37), (1, 19... \n",
988
+ "3 [(1, 42, 40), (0, 39, 15), (0, 37, 9), (0, 47,... \n",
989
+ "4 [(1, 45, 19), (1, 1, 46), (0, 40, 37), (0, 10,... \n",
990
+ "5 [(2, 17, 43), (0, 11, 42), (1, 18, 47), (0, 7,... \n",
991
+ "6 [(1, 34, 47), (0, 22, 23), (2, 39, 12), (1, 42... \n",
992
+ "7 [(1, 36, 14), (1, 47, 11), (0, 31, 40), (1, 28... \n",
993
+ "8 [(0, 42, 29), (2, 30, 26), (1, 49, 19), (2, 19... \n",
994
+ "9 [(0, 48, 24), (1, 37, 44), (1, 35, 10), (1, 49... \n",
995
+ "\n",
996
+ " \\\n",
997
+ "name Cy5 \n",
998
+ "acquisition_id 2 \n",
999
+ "cell_id \n",
1000
+ "0 [(0, 38, 40), (0, 1, 31), (1, 44, 0), (1, 27, ... \n",
1001
+ "1 [(0, 20, 39), (0, 43, 45), (2, 17, 32), (2, 35... \n",
1002
+ "2 [(2, 10, 7), (0, 27, 49), (0, 13, 11), (2, 1, ... \n",
1003
+ "3 [(2, 3, 20), (0, 0, 18), (0, 22, 16), (0, 23, ... \n",
1004
+ "4 [(1, 45, 8), (0, 16, 43), (0, 14, 17), (1, 39,... \n",
1005
+ "5 [(1, 40, 7), (0, 19, 47), (0, 21, 21), (1, 21,... \n",
1006
+ "6 [(1, 14, 10), (0, 48, 23), (1, 20, 10), (2, 16... \n",
1007
+ "7 [(2, 15, 14), (1, 34, 47), (2, 17, 9), (1, 3, ... \n",
1008
+ "8 [(1, 19, 32), (0, 46, 40), (1, 7, 17), (2, 11,... \n",
1009
+ "9 [(1, 28, 35), (2, 27, 28), (1, 16, 32), (2, 22... \n",
1010
+ "\n",
1011
+ " total_rna_number \n",
1012
+ "name Cy3 Cy5 \n",
1013
+ "acquisition_id 1 2 \n",
1014
+ "cell_id \n",
1015
+ "0 101 99 \n",
1016
+ "1 110 89 \n",
1017
+ "2 93 111 \n",
1018
+ "3 106 92 \n",
1019
+ "4 98 97 \n",
1020
+ "5 87 95 \n",
1021
+ "6 106 115 \n",
1022
+ "7 91 102 \n",
1023
+ "8 108 91 \n",
1024
+ "9 100 109 "
1025
+ ]
1026
+ },
1027
+ "execution_count": 201,
1028
+ "metadata": {},
1029
+ "output_type": "execute_result"
1030
+ }
1031
+ ],
1032
+ "source": [
1033
+ "pivot_values_columns = ['all_spots', 'clustered_spots', 'free_spots', 'total_rna_number']\n",
1034
+ "colocalisation_df = Cell_df.pivot(\n",
1035
+ " columns=['name', 'acquisition_id'],\n",
1036
+ " values= pivot_values_columns,\n",
1037
+ " index= 'cell_id'\n",
1038
+ " )\n",
1039
+ "colocalisation_df"
1040
+ ]
1041
+ },
1042
+ {
1043
+ "cell_type": "markdown",
1044
+ "metadata": {},
1045
+ "source": [
1046
+ "This DataFrame shape allows to get use the current implementation : \n",
1047
+ "\n"
1048
+ ]
1049
+ },
1050
+ {
1051
+ "cell_type": "code",
1052
+ "execution_count": null,
1053
+ "metadata": {},
1054
+ "outputs": [],
1055
+ "source": [
1056
+ "if False : \n",
1057
+ " colocalisation_df[(\"spots_to_spots_count\",coloc_name,\"forward\")] = colocalisation_df['rna_coords'].apply(\n",
1058
+ " lambda x: spots_colocalisation(\n",
1059
+ " spot_list1= x[(acquisition_name_id1,acquisition_id1)],\n",
1060
+ " spot_list2= x[(acquisition_name_id2,acquisition_id2)],\n",
1061
+ " distance=colocalisation_distance,\n",
1062
+ " voxel_size=voxel_size\n",
1063
+ " ),axis=1\n",
1064
+ " )\n",
1065
+ " colocalisation_df[(\"spots_to_spots_fraction\",coloc_name,\"forward\")] = colocalisation_df[(\"spots_to_spots_count\",coloc_name,\"forward\")].astype(float) / colocalisation_df[('total_rna_number',acquisition_name_id1,acquisition_id1)].astype(float)"
1066
+ ]
1067
+ },
1068
+ {
1069
+ "cell_type": "markdown",
1070
+ "metadata": {},
1071
+ "source": [
1072
+ "# Concatenate DataFrames with different columns on axis 0"
1073
+ ]
1074
+ },
1075
+ {
1076
+ "cell_type": "code",
1077
+ "execution_count": 202,
1078
+ "metadata": {},
1079
+ "outputs": [],
1080
+ "source": [
1081
+ "import pandas as pd\n",
1082
+ "import numpy as np"
1083
+ ]
1084
+ },
1085
+ {
1086
+ "cell_type": "code",
1087
+ "execution_count": 219,
1088
+ "metadata": {},
1089
+ "outputs": [],
1090
+ "source": [
1091
+ "COLUMNS_1 = ['group_id', 'id', 'fruits','colors']\n",
1092
+ "COLUMNS_2 = ['group_id', 'id', 'vegetables','colors']\n",
1093
+ "COLUMNS_MAIN = ['summer','winter']\n",
1094
+ "\n",
1095
+ "COLORS = ['green','red','yellow','orange','green']\n",
1096
+ "group_id = [1,2,1,2,1]\n",
1097
+ "fruits = ['apple', 'apple','lemon','kaki','pear']\n",
1098
+ "vegetables = ['pepper', 'tomato','peper','pepper','courgette']\n",
1099
+ "ids = np.arange(len(group_id))"
1100
+ ]
1101
+ },
1102
+ {
1103
+ "cell_type": "code",
1104
+ "execution_count": 225,
1105
+ "metadata": {},
1106
+ "outputs": [],
1107
+ "source": [
1108
+ "DF1 = pd.DataFrame(columns=pd.MultiIndex.from_product([COLUMNS_MAIN,COLUMNS_1]), data= zip(group_id,ids,fruits,COLORS, group_id,ids,fruits,COLORS))\n",
1109
+ "DF2 = pd.DataFrame(columns=pd.MultiIndex.from_product([COLUMNS_MAIN,COLUMNS_2]), data= zip(group_id,ids,vegetables,COLORS, group_id,ids,vegetables,COLORS))"
1110
+ ]
1111
+ },
1112
+ {
1113
+ "cell_type": "code",
1114
+ "execution_count": 226,
1115
+ "metadata": {},
1116
+ "outputs": [
1117
+ {
1118
+ "data": {
1119
+ "text/html": [
1120
+ "<div>\n",
1121
+ "<style scoped>\n",
1122
+ " .dataframe tbody tr th:only-of-type {\n",
1123
+ " vertical-align: middle;\n",
1124
+ " }\n",
1125
+ "\n",
1126
+ " .dataframe tbody tr th {\n",
1127
+ " vertical-align: top;\n",
1128
+ " }\n",
1129
+ "\n",
1130
+ " .dataframe thead tr th {\n",
1131
+ " text-align: left;\n",
1132
+ " }\n",
1133
+ "</style>\n",
1134
+ "<table border=\"1\" class=\"dataframe\">\n",
1135
+ " <thead>\n",
1136
+ " <tr>\n",
1137
+ " <th></th>\n",
1138
+ " <th colspan=\"4\" halign=\"left\">summer</th>\n",
1139
+ " <th colspan=\"4\" halign=\"left\">winter</th>\n",
1140
+ " </tr>\n",
1141
+ " <tr>\n",
1142
+ " <th></th>\n",
1143
+ " <th>group_id</th>\n",
1144
+ " <th>id</th>\n",
1145
+ " <th>fruits</th>\n",
1146
+ " <th>colors</th>\n",
1147
+ " <th>group_id</th>\n",
1148
+ " <th>id</th>\n",
1149
+ " <th>fruits</th>\n",
1150
+ " <th>colors</th>\n",
1151
+ " </tr>\n",
1152
+ " </thead>\n",
1153
+ " <tbody>\n",
1154
+ " <tr>\n",
1155
+ " <th>0</th>\n",
1156
+ " <td>1</td>\n",
1157
+ " <td>0</td>\n",
1158
+ " <td>apple</td>\n",
1159
+ " <td>green</td>\n",
1160
+ " <td>1</td>\n",
1161
+ " <td>0</td>\n",
1162
+ " <td>apple</td>\n",
1163
+ " <td>green</td>\n",
1164
+ " </tr>\n",
1165
+ " <tr>\n",
1166
+ " <th>1</th>\n",
1167
+ " <td>2</td>\n",
1168
+ " <td>1</td>\n",
1169
+ " <td>apple</td>\n",
1170
+ " <td>red</td>\n",
1171
+ " <td>2</td>\n",
1172
+ " <td>1</td>\n",
1173
+ " <td>apple</td>\n",
1174
+ " <td>red</td>\n",
1175
+ " </tr>\n",
1176
+ " <tr>\n",
1177
+ " <th>2</th>\n",
1178
+ " <td>1</td>\n",
1179
+ " <td>2</td>\n",
1180
+ " <td>lemon</td>\n",
1181
+ " <td>yellow</td>\n",
1182
+ " <td>1</td>\n",
1183
+ " <td>2</td>\n",
1184
+ " <td>lemon</td>\n",
1185
+ " <td>yellow</td>\n",
1186
+ " </tr>\n",
1187
+ " <tr>\n",
1188
+ " <th>3</th>\n",
1189
+ " <td>2</td>\n",
1190
+ " <td>3</td>\n",
1191
+ " <td>kaki</td>\n",
1192
+ " <td>orange</td>\n",
1193
+ " <td>2</td>\n",
1194
+ " <td>3</td>\n",
1195
+ " <td>kaki</td>\n",
1196
+ " <td>orange</td>\n",
1197
+ " </tr>\n",
1198
+ " <tr>\n",
1199
+ " <th>4</th>\n",
1200
+ " <td>1</td>\n",
1201
+ " <td>4</td>\n",
1202
+ " <td>pear</td>\n",
1203
+ " <td>green</td>\n",
1204
+ " <td>1</td>\n",
1205
+ " <td>4</td>\n",
1206
+ " <td>pear</td>\n",
1207
+ " <td>green</td>\n",
1208
+ " </tr>\n",
1209
+ " <tr>\n",
1210
+ " <th>5</th>\n",
1211
+ " <td>1</td>\n",
1212
+ " <td>5</td>\n",
1213
+ " <td>apple</td>\n",
1214
+ " <td>green</td>\n",
1215
+ " <td>1</td>\n",
1216
+ " <td>5</td>\n",
1217
+ " <td>apple</td>\n",
1218
+ " <td>green</td>\n",
1219
+ " </tr>\n",
1220
+ " <tr>\n",
1221
+ " <th>6</th>\n",
1222
+ " <td>2</td>\n",
1223
+ " <td>6</td>\n",
1224
+ " <td>apple</td>\n",
1225
+ " <td>red</td>\n",
1226
+ " <td>2</td>\n",
1227
+ " <td>6</td>\n",
1228
+ " <td>apple</td>\n",
1229
+ " <td>red</td>\n",
1230
+ " </tr>\n",
1231
+ " <tr>\n",
1232
+ " <th>7</th>\n",
1233
+ " <td>1</td>\n",
1234
+ " <td>7</td>\n",
1235
+ " <td>lemon</td>\n",
1236
+ " <td>yellow</td>\n",
1237
+ " <td>1</td>\n",
1238
+ " <td>7</td>\n",
1239
+ " <td>lemon</td>\n",
1240
+ " <td>yellow</td>\n",
1241
+ " </tr>\n",
1242
+ " <tr>\n",
1243
+ " <th>8</th>\n",
1244
+ " <td>2</td>\n",
1245
+ " <td>8</td>\n",
1246
+ " <td>kaki</td>\n",
1247
+ " <td>orange</td>\n",
1248
+ " <td>2</td>\n",
1249
+ " <td>8</td>\n",
1250
+ " <td>kaki</td>\n",
1251
+ " <td>orange</td>\n",
1252
+ " </tr>\n",
1253
+ " <tr>\n",
1254
+ " <th>9</th>\n",
1255
+ " <td>1</td>\n",
1256
+ " <td>9</td>\n",
1257
+ " <td>pear</td>\n",
1258
+ " <td>green</td>\n",
1259
+ " <td>1</td>\n",
1260
+ " <td>9</td>\n",
1261
+ " <td>pear</td>\n",
1262
+ " <td>green</td>\n",
1263
+ " </tr>\n",
1264
+ " </tbody>\n",
1265
+ "</table>\n",
1266
+ "</div>"
1267
+ ],
1268
+ "text/plain": [
1269
+ " summer winter \n",
1270
+ " group_id id fruits colors group_id id fruits colors\n",
1271
+ "0 1 0 apple green 1 0 apple green\n",
1272
+ "1 2 1 apple red 2 1 apple red\n",
1273
+ "2 1 2 lemon yellow 1 2 lemon yellow\n",
1274
+ "3 2 3 kaki orange 2 3 kaki orange\n",
1275
+ "4 1 4 pear green 1 4 pear green\n",
1276
+ "5 1 5 apple green 1 5 apple green\n",
1277
+ "6 2 6 apple red 2 6 apple red\n",
1278
+ "7 1 7 lemon yellow 1 7 lemon yellow\n",
1279
+ "8 2 8 kaki orange 2 8 kaki orange\n",
1280
+ "9 1 9 pear green 1 9 pear green"
1281
+ ]
1282
+ },
1283
+ "execution_count": 226,
1284
+ "metadata": {},
1285
+ "output_type": "execute_result"
1286
+ }
1287
+ ],
1288
+ "source": [
1289
+ "DF1"
1290
+ ]
1291
+ },
1292
+ {
1293
+ "cell_type": "code",
1294
+ "execution_count": 227,
1295
+ "metadata": {},
1296
+ "outputs": [
1297
+ {
1298
+ "data": {
1299
+ "text/html": [
1300
+ "<div>\n",
1301
+ "<style scoped>\n",
1302
+ " .dataframe tbody tr th:only-of-type {\n",
1303
+ " vertical-align: middle;\n",
1304
+ " }\n",
1305
+ "\n",
1306
+ " .dataframe tbody tr th {\n",
1307
+ " vertical-align: top;\n",
1308
+ " }\n",
1309
+ "\n",
1310
+ " .dataframe thead tr th {\n",
1311
+ " text-align: left;\n",
1312
+ " }\n",
1313
+ "</style>\n",
1314
+ "<table border=\"1\" class=\"dataframe\">\n",
1315
+ " <thead>\n",
1316
+ " <tr>\n",
1317
+ " <th></th>\n",
1318
+ " <th colspan=\"4\" halign=\"left\">summer</th>\n",
1319
+ " <th colspan=\"4\" halign=\"left\">winter</th>\n",
1320
+ " </tr>\n",
1321
+ " <tr>\n",
1322
+ " <th></th>\n",
1323
+ " <th>group_id</th>\n",
1324
+ " <th>id</th>\n",
1325
+ " <th>vegetables</th>\n",
1326
+ " <th>colors</th>\n",
1327
+ " <th>group_id</th>\n",
1328
+ " <th>id</th>\n",
1329
+ " <th>vegetables</th>\n",
1330
+ " <th>colors</th>\n",
1331
+ " </tr>\n",
1332
+ " </thead>\n",
1333
+ " <tbody>\n",
1334
+ " <tr>\n",
1335
+ " <th>0</th>\n",
1336
+ " <td>1</td>\n",
1337
+ " <td>0</td>\n",
1338
+ " <td>pepper</td>\n",
1339
+ " <td>green</td>\n",
1340
+ " <td>1</td>\n",
1341
+ " <td>0</td>\n",
1342
+ " <td>pepper</td>\n",
1343
+ " <td>green</td>\n",
1344
+ " </tr>\n",
1345
+ " <tr>\n",
1346
+ " <th>1</th>\n",
1347
+ " <td>2</td>\n",
1348
+ " <td>1</td>\n",
1349
+ " <td>tomato</td>\n",
1350
+ " <td>red</td>\n",
1351
+ " <td>2</td>\n",
1352
+ " <td>1</td>\n",
1353
+ " <td>tomato</td>\n",
1354
+ " <td>red</td>\n",
1355
+ " </tr>\n",
1356
+ " <tr>\n",
1357
+ " <th>2</th>\n",
1358
+ " <td>1</td>\n",
1359
+ " <td>2</td>\n",
1360
+ " <td>peper</td>\n",
1361
+ " <td>yellow</td>\n",
1362
+ " <td>1</td>\n",
1363
+ " <td>2</td>\n",
1364
+ " <td>peper</td>\n",
1365
+ " <td>yellow</td>\n",
1366
+ " </tr>\n",
1367
+ " <tr>\n",
1368
+ " <th>3</th>\n",
1369
+ " <td>2</td>\n",
1370
+ " <td>3</td>\n",
1371
+ " <td>pepper</td>\n",
1372
+ " <td>orange</td>\n",
1373
+ " <td>2</td>\n",
1374
+ " <td>3</td>\n",
1375
+ " <td>pepper</td>\n",
1376
+ " <td>orange</td>\n",
1377
+ " </tr>\n",
1378
+ " <tr>\n",
1379
+ " <th>4</th>\n",
1380
+ " <td>1</td>\n",
1381
+ " <td>4</td>\n",
1382
+ " <td>courgette</td>\n",
1383
+ " <td>green</td>\n",
1384
+ " <td>1</td>\n",
1385
+ " <td>4</td>\n",
1386
+ " <td>courgette</td>\n",
1387
+ " <td>green</td>\n",
1388
+ " </tr>\n",
1389
+ " <tr>\n",
1390
+ " <th>5</th>\n",
1391
+ " <td>1</td>\n",
1392
+ " <td>5</td>\n",
1393
+ " <td>pepper</td>\n",
1394
+ " <td>green</td>\n",
1395
+ " <td>1</td>\n",
1396
+ " <td>5</td>\n",
1397
+ " <td>pepper</td>\n",
1398
+ " <td>green</td>\n",
1399
+ " </tr>\n",
1400
+ " <tr>\n",
1401
+ " <th>6</th>\n",
1402
+ " <td>2</td>\n",
1403
+ " <td>6</td>\n",
1404
+ " <td>tomato</td>\n",
1405
+ " <td>red</td>\n",
1406
+ " <td>2</td>\n",
1407
+ " <td>6</td>\n",
1408
+ " <td>tomato</td>\n",
1409
+ " <td>red</td>\n",
1410
+ " </tr>\n",
1411
+ " <tr>\n",
1412
+ " <th>7</th>\n",
1413
+ " <td>1</td>\n",
1414
+ " <td>7</td>\n",
1415
+ " <td>peper</td>\n",
1416
+ " <td>yellow</td>\n",
1417
+ " <td>1</td>\n",
1418
+ " <td>7</td>\n",
1419
+ " <td>peper</td>\n",
1420
+ " <td>yellow</td>\n",
1421
+ " </tr>\n",
1422
+ " <tr>\n",
1423
+ " <th>8</th>\n",
1424
+ " <td>2</td>\n",
1425
+ " <td>8</td>\n",
1426
+ " <td>pepper</td>\n",
1427
+ " <td>orange</td>\n",
1428
+ " <td>2</td>\n",
1429
+ " <td>8</td>\n",
1430
+ " <td>pepper</td>\n",
1431
+ " <td>orange</td>\n",
1432
+ " </tr>\n",
1433
+ " <tr>\n",
1434
+ " <th>9</th>\n",
1435
+ " <td>1</td>\n",
1436
+ " <td>9</td>\n",
1437
+ " <td>courgette</td>\n",
1438
+ " <td>green</td>\n",
1439
+ " <td>1</td>\n",
1440
+ " <td>9</td>\n",
1441
+ " <td>courgette</td>\n",
1442
+ " <td>green</td>\n",
1443
+ " </tr>\n",
1444
+ " </tbody>\n",
1445
+ "</table>\n",
1446
+ "</div>"
1447
+ ],
1448
+ "text/plain": [
1449
+ " summer winter \n",
1450
+ " group_id id vegetables colors group_id id vegetables colors\n",
1451
+ "0 1 0 pepper green 1 0 pepper green\n",
1452
+ "1 2 1 tomato red 2 1 tomato red\n",
1453
+ "2 1 2 peper yellow 1 2 peper yellow\n",
1454
+ "3 2 3 pepper orange 2 3 pepper orange\n",
1455
+ "4 1 4 courgette green 1 4 courgette green\n",
1456
+ "5 1 5 pepper green 1 5 pepper green\n",
1457
+ "6 2 6 tomato red 2 6 tomato red\n",
1458
+ "7 1 7 peper yellow 1 7 peper yellow\n",
1459
+ "8 2 8 pepper orange 2 8 pepper orange\n",
1460
+ "9 1 9 courgette green 1 9 courgette green"
1461
+ ]
1462
+ },
1463
+ "execution_count": 227,
1464
+ "metadata": {},
1465
+ "output_type": "execute_result"
1466
+ }
1467
+ ],
1468
+ "source": [
1469
+ "DF2"
1470
+ ]
1471
+ },
1472
+ {
1473
+ "cell_type": "code",
1474
+ "execution_count": 228,
1475
+ "metadata": {},
1476
+ "outputs": [
1477
+ {
1478
+ "data": {
1479
+ "text/html": [
1480
+ "<div>\n",
1481
+ "<style scoped>\n",
1482
+ " .dataframe tbody tr th:only-of-type {\n",
1483
+ " vertical-align: middle;\n",
1484
+ " }\n",
1485
+ "\n",
1486
+ " .dataframe tbody tr th {\n",
1487
+ " vertical-align: top;\n",
1488
+ " }\n",
1489
+ "\n",
1490
+ " .dataframe thead tr th {\n",
1491
+ " text-align: left;\n",
1492
+ " }\n",
1493
+ "</style>\n",
1494
+ "<table border=\"1\" class=\"dataframe\">\n",
1495
+ " <thead>\n",
1496
+ " <tr>\n",
1497
+ " <th></th>\n",
1498
+ " <th colspan=\"4\" halign=\"left\">summer</th>\n",
1499
+ " <th colspan=\"4\" halign=\"left\">winter</th>\n",
1500
+ " <th>summer</th>\n",
1501
+ " <th>winter</th>\n",
1502
+ " </tr>\n",
1503
+ " <tr>\n",
1504
+ " <th></th>\n",
1505
+ " <th>group_id</th>\n",
1506
+ " <th>id</th>\n",
1507
+ " <th>fruits</th>\n",
1508
+ " <th>colors</th>\n",
1509
+ " <th>group_id</th>\n",
1510
+ " <th>id</th>\n",
1511
+ " <th>fruits</th>\n",
1512
+ " <th>colors</th>\n",
1513
+ " <th>vegetables</th>\n",
1514
+ " <th>vegetables</th>\n",
1515
+ " </tr>\n",
1516
+ " </thead>\n",
1517
+ " <tbody>\n",
1518
+ " <tr>\n",
1519
+ " <th>0</th>\n",
1520
+ " <td>1</td>\n",
1521
+ " <td>0</td>\n",
1522
+ " <td>apple</td>\n",
1523
+ " <td>green</td>\n",
1524
+ " <td>1</td>\n",
1525
+ " <td>0</td>\n",
1526
+ " <td>apple</td>\n",
1527
+ " <td>green</td>\n",
1528
+ " <td>NaN</td>\n",
1529
+ " <td>NaN</td>\n",
1530
+ " </tr>\n",
1531
+ " <tr>\n",
1532
+ " <th>1</th>\n",
1533
+ " <td>2</td>\n",
1534
+ " <td>1</td>\n",
1535
+ " <td>apple</td>\n",
1536
+ " <td>red</td>\n",
1537
+ " <td>2</td>\n",
1538
+ " <td>1</td>\n",
1539
+ " <td>apple</td>\n",
1540
+ " <td>red</td>\n",
1541
+ " <td>NaN</td>\n",
1542
+ " <td>NaN</td>\n",
1543
+ " </tr>\n",
1544
+ " <tr>\n",
1545
+ " <th>2</th>\n",
1546
+ " <td>1</td>\n",
1547
+ " <td>2</td>\n",
1548
+ " <td>lemon</td>\n",
1549
+ " <td>yellow</td>\n",
1550
+ " <td>1</td>\n",
1551
+ " <td>2</td>\n",
1552
+ " <td>lemon</td>\n",
1553
+ " <td>yellow</td>\n",
1554
+ " <td>NaN</td>\n",
1555
+ " <td>NaN</td>\n",
1556
+ " </tr>\n",
1557
+ " <tr>\n",
1558
+ " <th>3</th>\n",
1559
+ " <td>2</td>\n",
1560
+ " <td>3</td>\n",
1561
+ " <td>kaki</td>\n",
1562
+ " <td>orange</td>\n",
1563
+ " <td>2</td>\n",
1564
+ " <td>3</td>\n",
1565
+ " <td>kaki</td>\n",
1566
+ " <td>orange</td>\n",
1567
+ " <td>NaN</td>\n",
1568
+ " <td>NaN</td>\n",
1569
+ " </tr>\n",
1570
+ " <tr>\n",
1571
+ " <th>4</th>\n",
1572
+ " <td>1</td>\n",
1573
+ " <td>4</td>\n",
1574
+ " <td>pear</td>\n",
1575
+ " <td>green</td>\n",
1576
+ " <td>1</td>\n",
1577
+ " <td>4</td>\n",
1578
+ " <td>pear</td>\n",
1579
+ " <td>green</td>\n",
1580
+ " <td>NaN</td>\n",
1581
+ " <td>NaN</td>\n",
1582
+ " </tr>\n",
1583
+ " <tr>\n",
1584
+ " <th>5</th>\n",
1585
+ " <td>1</td>\n",
1586
+ " <td>5</td>\n",
1587
+ " <td>apple</td>\n",
1588
+ " <td>green</td>\n",
1589
+ " <td>1</td>\n",
1590
+ " <td>5</td>\n",
1591
+ " <td>apple</td>\n",
1592
+ " <td>green</td>\n",
1593
+ " <td>NaN</td>\n",
1594
+ " <td>NaN</td>\n",
1595
+ " </tr>\n",
1596
+ " <tr>\n",
1597
+ " <th>6</th>\n",
1598
+ " <td>2</td>\n",
1599
+ " <td>6</td>\n",
1600
+ " <td>apple</td>\n",
1601
+ " <td>red</td>\n",
1602
+ " <td>2</td>\n",
1603
+ " <td>6</td>\n",
1604
+ " <td>apple</td>\n",
1605
+ " <td>red</td>\n",
1606
+ " <td>NaN</td>\n",
1607
+ " <td>NaN</td>\n",
1608
+ " </tr>\n",
1609
+ " <tr>\n",
1610
+ " <th>7</th>\n",
1611
+ " <td>1</td>\n",
1612
+ " <td>7</td>\n",
1613
+ " <td>lemon</td>\n",
1614
+ " <td>yellow</td>\n",
1615
+ " <td>1</td>\n",
1616
+ " <td>7</td>\n",
1617
+ " <td>lemon</td>\n",
1618
+ " <td>yellow</td>\n",
1619
+ " <td>NaN</td>\n",
1620
+ " <td>NaN</td>\n",
1621
+ " </tr>\n",
1622
+ " <tr>\n",
1623
+ " <th>8</th>\n",
1624
+ " <td>2</td>\n",
1625
+ " <td>8</td>\n",
1626
+ " <td>kaki</td>\n",
1627
+ " <td>orange</td>\n",
1628
+ " <td>2</td>\n",
1629
+ " <td>8</td>\n",
1630
+ " <td>kaki</td>\n",
1631
+ " <td>orange</td>\n",
1632
+ " <td>NaN</td>\n",
1633
+ " <td>NaN</td>\n",
1634
+ " </tr>\n",
1635
+ " <tr>\n",
1636
+ " <th>9</th>\n",
1637
+ " <td>1</td>\n",
1638
+ " <td>9</td>\n",
1639
+ " <td>pear</td>\n",
1640
+ " <td>green</td>\n",
1641
+ " <td>1</td>\n",
1642
+ " <td>9</td>\n",
1643
+ " <td>pear</td>\n",
1644
+ " <td>green</td>\n",
1645
+ " <td>NaN</td>\n",
1646
+ " <td>NaN</td>\n",
1647
+ " </tr>\n",
1648
+ " <tr>\n",
1649
+ " <th>10</th>\n",
1650
+ " <td>1</td>\n",
1651
+ " <td>0</td>\n",
1652
+ " <td>NaN</td>\n",
1653
+ " <td>green</td>\n",
1654
+ " <td>1</td>\n",
1655
+ " <td>0</td>\n",
1656
+ " <td>NaN</td>\n",
1657
+ " <td>green</td>\n",
1658
+ " <td>pepper</td>\n",
1659
+ " <td>pepper</td>\n",
1660
+ " </tr>\n",
1661
+ " <tr>\n",
1662
+ " <th>11</th>\n",
1663
+ " <td>2</td>\n",
1664
+ " <td>1</td>\n",
1665
+ " <td>NaN</td>\n",
1666
+ " <td>red</td>\n",
1667
+ " <td>2</td>\n",
1668
+ " <td>1</td>\n",
1669
+ " <td>NaN</td>\n",
1670
+ " <td>red</td>\n",
1671
+ " <td>tomato</td>\n",
1672
+ " <td>tomato</td>\n",
1673
+ " </tr>\n",
1674
+ " <tr>\n",
1675
+ " <th>12</th>\n",
1676
+ " <td>1</td>\n",
1677
+ " <td>2</td>\n",
1678
+ " <td>NaN</td>\n",
1679
+ " <td>yellow</td>\n",
1680
+ " <td>1</td>\n",
1681
+ " <td>2</td>\n",
1682
+ " <td>NaN</td>\n",
1683
+ " <td>yellow</td>\n",
1684
+ " <td>peper</td>\n",
1685
+ " <td>peper</td>\n",
1686
+ " </tr>\n",
1687
+ " <tr>\n",
1688
+ " <th>13</th>\n",
1689
+ " <td>2</td>\n",
1690
+ " <td>3</td>\n",
1691
+ " <td>NaN</td>\n",
1692
+ " <td>orange</td>\n",
1693
+ " <td>2</td>\n",
1694
+ " <td>3</td>\n",
1695
+ " <td>NaN</td>\n",
1696
+ " <td>orange</td>\n",
1697
+ " <td>pepper</td>\n",
1698
+ " <td>pepper</td>\n",
1699
+ " </tr>\n",
1700
+ " <tr>\n",
1701
+ " <th>14</th>\n",
1702
+ " <td>1</td>\n",
1703
+ " <td>4</td>\n",
1704
+ " <td>NaN</td>\n",
1705
+ " <td>green</td>\n",
1706
+ " <td>1</td>\n",
1707
+ " <td>4</td>\n",
1708
+ " <td>NaN</td>\n",
1709
+ " <td>green</td>\n",
1710
+ " <td>courgette</td>\n",
1711
+ " <td>courgette</td>\n",
1712
+ " </tr>\n",
1713
+ " <tr>\n",
1714
+ " <th>15</th>\n",
1715
+ " <td>1</td>\n",
1716
+ " <td>5</td>\n",
1717
+ " <td>NaN</td>\n",
1718
+ " <td>green</td>\n",
1719
+ " <td>1</td>\n",
1720
+ " <td>5</td>\n",
1721
+ " <td>NaN</td>\n",
1722
+ " <td>green</td>\n",
1723
+ " <td>pepper</td>\n",
1724
+ " <td>pepper</td>\n",
1725
+ " </tr>\n",
1726
+ " <tr>\n",
1727
+ " <th>16</th>\n",
1728
+ " <td>2</td>\n",
1729
+ " <td>6</td>\n",
1730
+ " <td>NaN</td>\n",
1731
+ " <td>red</td>\n",
1732
+ " <td>2</td>\n",
1733
+ " <td>6</td>\n",
1734
+ " <td>NaN</td>\n",
1735
+ " <td>red</td>\n",
1736
+ " <td>tomato</td>\n",
1737
+ " <td>tomato</td>\n",
1738
+ " </tr>\n",
1739
+ " <tr>\n",
1740
+ " <th>17</th>\n",
1741
+ " <td>1</td>\n",
1742
+ " <td>7</td>\n",
1743
+ " <td>NaN</td>\n",
1744
+ " <td>yellow</td>\n",
1745
+ " <td>1</td>\n",
1746
+ " <td>7</td>\n",
1747
+ " <td>NaN</td>\n",
1748
+ " <td>yellow</td>\n",
1749
+ " <td>peper</td>\n",
1750
+ " <td>peper</td>\n",
1751
+ " </tr>\n",
1752
+ " <tr>\n",
1753
+ " <th>18</th>\n",
1754
+ " <td>2</td>\n",
1755
+ " <td>8</td>\n",
1756
+ " <td>NaN</td>\n",
1757
+ " <td>orange</td>\n",
1758
+ " <td>2</td>\n",
1759
+ " <td>8</td>\n",
1760
+ " <td>NaN</td>\n",
1761
+ " <td>orange</td>\n",
1762
+ " <td>pepper</td>\n",
1763
+ " <td>pepper</td>\n",
1764
+ " </tr>\n",
1765
+ " <tr>\n",
1766
+ " <th>19</th>\n",
1767
+ " <td>1</td>\n",
1768
+ " <td>9</td>\n",
1769
+ " <td>NaN</td>\n",
1770
+ " <td>green</td>\n",
1771
+ " <td>1</td>\n",
1772
+ " <td>9</td>\n",
1773
+ " <td>NaN</td>\n",
1774
+ " <td>green</td>\n",
1775
+ " <td>courgette</td>\n",
1776
+ " <td>courgette</td>\n",
1777
+ " </tr>\n",
1778
+ " </tbody>\n",
1779
+ "</table>\n",
1780
+ "</div>"
1781
+ ],
1782
+ "text/plain": [
1783
+ " summer winter summer winter\n",
1784
+ " group_id id fruits colors group_id id fruits colors vegetables vegetables\n",
1785
+ "0 1 0 apple green 1 0 apple green NaN NaN\n",
1786
+ "1 2 1 apple red 2 1 apple red NaN NaN\n",
1787
+ "2 1 2 lemon yellow 1 2 lemon yellow NaN NaN\n",
1788
+ "3 2 3 kaki orange 2 3 kaki orange NaN NaN\n",
1789
+ "4 1 4 pear green 1 4 pear green NaN NaN\n",
1790
+ "5 1 5 apple green 1 5 apple green NaN NaN\n",
1791
+ "6 2 6 apple red 2 6 apple red NaN NaN\n",
1792
+ "7 1 7 lemon yellow 1 7 lemon yellow NaN NaN\n",
1793
+ "8 2 8 kaki orange 2 8 kaki orange NaN NaN\n",
1794
+ "9 1 9 pear green 1 9 pear green NaN NaN\n",
1795
+ "10 1 0 NaN green 1 0 NaN green pepper pepper\n",
1796
+ "11 2 1 NaN red 2 1 NaN red tomato tomato\n",
1797
+ "12 1 2 NaN yellow 1 2 NaN yellow peper peper\n",
1798
+ "13 2 3 NaN orange 2 3 NaN orange pepper pepper\n",
1799
+ "14 1 4 NaN green 1 4 NaN green courgette courgette\n",
1800
+ "15 1 5 NaN green 1 5 NaN green pepper pepper\n",
1801
+ "16 2 6 NaN red 2 6 NaN red tomato tomato\n",
1802
+ "17 1 7 NaN yellow 1 7 NaN yellow peper peper\n",
1803
+ "18 2 8 NaN orange 2 8 NaN orange pepper pepper\n",
1804
+ "19 1 9 NaN green 1 9 NaN green courgette courgette"
1805
+ ]
1806
+ },
1807
+ "execution_count": 228,
1808
+ "metadata": {},
1809
+ "output_type": "execute_result"
1810
+ }
1811
+ ],
1812
+ "source": [
1813
+ "pd.concat([DF1,DF2],axis=0, ignore_index=True)"
1814
+ ]
1815
+ },
1816
+ {
1817
+ "cell_type": "markdown",
1818
+ "metadata": {},
1819
+ "source": [
1820
+ "### Setting tuple value in multi-index columns df"
1821
+ ]
1822
+ },
1823
+ {
1824
+ "cell_type": "code",
1825
+ "execution_count": 237,
1826
+ "metadata": {},
1827
+ "outputs": [
1828
+ {
1829
+ "data": {
1830
+ "text/html": [
1831
+ "<div>\n",
1832
+ "<style scoped>\n",
1833
+ " .dataframe tbody tr th:only-of-type {\n",
1834
+ " vertical-align: middle;\n",
1835
+ " }\n",
1836
+ "\n",
1837
+ " .dataframe tbody tr th {\n",
1838
+ " vertical-align: top;\n",
1839
+ " }\n",
1840
+ "\n",
1841
+ " .dataframe thead tr th {\n",
1842
+ " text-align: left;\n",
1843
+ " }\n",
1844
+ "</style>\n",
1845
+ "<table border=\"1\" class=\"dataframe\">\n",
1846
+ " <thead>\n",
1847
+ " <tr>\n",
1848
+ " <th></th>\n",
1849
+ " <th colspan=\"4\" halign=\"left\">summer</th>\n",
1850
+ " <th colspan=\"4\" halign=\"left\">winter</th>\n",
1851
+ " <th>TVA</th>\n",
1852
+ " </tr>\n",
1853
+ " <tr>\n",
1854
+ " <th></th>\n",
1855
+ " <th>group_id</th>\n",
1856
+ " <th>id</th>\n",
1857
+ " <th>fruits</th>\n",
1858
+ " <th>colors</th>\n",
1859
+ " <th>group_id</th>\n",
1860
+ " <th>id</th>\n",
1861
+ " <th>fruits</th>\n",
1862
+ " <th>colors</th>\n",
1863
+ " <th></th>\n",
1864
+ " </tr>\n",
1865
+ " </thead>\n",
1866
+ " <tbody>\n",
1867
+ " <tr>\n",
1868
+ " <th>0</th>\n",
1869
+ " <td>1</td>\n",
1870
+ " <td>0</td>\n",
1871
+ " <td>apple</td>\n",
1872
+ " <td>green</td>\n",
1873
+ " <td>1</td>\n",
1874
+ " <td>0</td>\n",
1875
+ " <td>apple</td>\n",
1876
+ " <td>green</td>\n",
1877
+ " <td>(1, 1)</td>\n",
1878
+ " </tr>\n",
1879
+ " <tr>\n",
1880
+ " <th>1</th>\n",
1881
+ " <td>2</td>\n",
1882
+ " <td>1</td>\n",
1883
+ " <td>apple</td>\n",
1884
+ " <td>red</td>\n",
1885
+ " <td>2</td>\n",
1886
+ " <td>1</td>\n",
1887
+ " <td>apple</td>\n",
1888
+ " <td>red</td>\n",
1889
+ " <td>(1, 1)</td>\n",
1890
+ " </tr>\n",
1891
+ " <tr>\n",
1892
+ " <th>2</th>\n",
1893
+ " <td>1</td>\n",
1894
+ " <td>2</td>\n",
1895
+ " <td>lemon</td>\n",
1896
+ " <td>yellow</td>\n",
1897
+ " <td>1</td>\n",
1898
+ " <td>2</td>\n",
1899
+ " <td>lemon</td>\n",
1900
+ " <td>yellow</td>\n",
1901
+ " <td>(1, 1)</td>\n",
1902
+ " </tr>\n",
1903
+ " <tr>\n",
1904
+ " <th>3</th>\n",
1905
+ " <td>2</td>\n",
1906
+ " <td>3</td>\n",
1907
+ " <td>kaki</td>\n",
1908
+ " <td>orange</td>\n",
1909
+ " <td>2</td>\n",
1910
+ " <td>3</td>\n",
1911
+ " <td>kaki</td>\n",
1912
+ " <td>orange</td>\n",
1913
+ " <td>(1, 1)</td>\n",
1914
+ " </tr>\n",
1915
+ " <tr>\n",
1916
+ " <th>4</th>\n",
1917
+ " <td>1</td>\n",
1918
+ " <td>4</td>\n",
1919
+ " <td>pear</td>\n",
1920
+ " <td>green</td>\n",
1921
+ " <td>1</td>\n",
1922
+ " <td>4</td>\n",
1923
+ " <td>pear</td>\n",
1924
+ " <td>green</td>\n",
1925
+ " <td>(1, 1)</td>\n",
1926
+ " </tr>\n",
1927
+ " <tr>\n",
1928
+ " <th>5</th>\n",
1929
+ " <td>1</td>\n",
1930
+ " <td>5</td>\n",
1931
+ " <td>apple</td>\n",
1932
+ " <td>green</td>\n",
1933
+ " <td>1</td>\n",
1934
+ " <td>5</td>\n",
1935
+ " <td>apple</td>\n",
1936
+ " <td>green</td>\n",
1937
+ " <td>(1, 1)</td>\n",
1938
+ " </tr>\n",
1939
+ " <tr>\n",
1940
+ " <th>6</th>\n",
1941
+ " <td>2</td>\n",
1942
+ " <td>6</td>\n",
1943
+ " <td>apple</td>\n",
1944
+ " <td>red</td>\n",
1945
+ " <td>2</td>\n",
1946
+ " <td>6</td>\n",
1947
+ " <td>apple</td>\n",
1948
+ " <td>red</td>\n",
1949
+ " <td>(1, 1)</td>\n",
1950
+ " </tr>\n",
1951
+ " <tr>\n",
1952
+ " <th>7</th>\n",
1953
+ " <td>1</td>\n",
1954
+ " <td>7</td>\n",
1955
+ " <td>lemon</td>\n",
1956
+ " <td>yellow</td>\n",
1957
+ " <td>1</td>\n",
1958
+ " <td>7</td>\n",
1959
+ " <td>lemon</td>\n",
1960
+ " <td>yellow</td>\n",
1961
+ " <td>(1, 1)</td>\n",
1962
+ " </tr>\n",
1963
+ " <tr>\n",
1964
+ " <th>8</th>\n",
1965
+ " <td>2</td>\n",
1966
+ " <td>8</td>\n",
1967
+ " <td>kaki</td>\n",
1968
+ " <td>orange</td>\n",
1969
+ " <td>2</td>\n",
1970
+ " <td>8</td>\n",
1971
+ " <td>kaki</td>\n",
1972
+ " <td>orange</td>\n",
1973
+ " <td>(1, 1)</td>\n",
1974
+ " </tr>\n",
1975
+ " <tr>\n",
1976
+ " <th>9</th>\n",
1977
+ " <td>1</td>\n",
1978
+ " <td>9</td>\n",
1979
+ " <td>pear</td>\n",
1980
+ " <td>green</td>\n",
1981
+ " <td>1</td>\n",
1982
+ " <td>9</td>\n",
1983
+ " <td>pear</td>\n",
1984
+ " <td>green</td>\n",
1985
+ " <td>(1, 1)</td>\n",
1986
+ " </tr>\n",
1987
+ " </tbody>\n",
1988
+ "</table>\n",
1989
+ "</div>"
1990
+ ],
1991
+ "text/plain": [
1992
+ " summer winter TVA\n",
1993
+ " group_id id fruits colors group_id id fruits colors \n",
1994
+ "0 1 0 apple green 1 0 apple green (1, 1)\n",
1995
+ "1 2 1 apple red 2 1 apple red (1, 1)\n",
1996
+ "2 1 2 lemon yellow 1 2 lemon yellow (1, 1)\n",
1997
+ "3 2 3 kaki orange 2 3 kaki orange (1, 1)\n",
1998
+ "4 1 4 pear green 1 4 pear green (1, 1)\n",
1999
+ "5 1 5 apple green 1 5 apple green (1, 1)\n",
2000
+ "6 2 6 apple red 2 6 apple red (1, 1)\n",
2001
+ "7 1 7 lemon yellow 1 7 lemon yellow (1, 1)\n",
2002
+ "8 2 8 kaki orange 2 8 kaki orange (1, 1)\n",
2003
+ "9 1 9 pear green 1 9 pear green (1, 1)"
2004
+ ]
2005
+ },
2006
+ "execution_count": 237,
2007
+ "metadata": {},
2008
+ "output_type": "execute_result"
2009
+ }
2010
+ ],
2011
+ "source": [
2012
+ "DF1['TVA'] = [(1,1)]*len(DF1)\n",
2013
+ "DF1"
2014
+ ]
2015
+ },
2016
+ {
2017
+ "cell_type": "code",
2018
+ "execution_count": 253,
2019
+ "metadata": {},
2020
+ "outputs": [
2021
+ {
2022
+ "name": "stdout",
2023
+ "output_type": "stream",
2024
+ "text": [
2025
+ "[(1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1) (1, 1)]\n"
2026
+ ]
2027
+ },
2028
+ {
2029
+ "data": {
2030
+ "text/plain": [
2031
+ "False"
2032
+ ]
2033
+ },
2034
+ "execution_count": 253,
2035
+ "metadata": {},
2036
+ "output_type": "execute_result"
2037
+ }
2038
+ ],
2039
+ "source": [
2040
+ "print(DF1['TVA'].to_numpy())\n",
2041
+ "\n",
2042
+ "0 in DF1['TVA'].iat[0]"
2043
+ ]
2044
+ }
2045
+ ],
2046
+ "metadata": {
2047
+ "kernelspec": {
2048
+ "display_name": "cellpose",
2049
+ "language": "python",
2050
+ "name": "python3"
2051
+ },
2052
+ "language_info": {
2053
+ "codemirror_mode": {
2054
+ "name": "ipython",
2055
+ "version": 3
2056
+ },
2057
+ "file_extension": ".py",
2058
+ "mimetype": "text/x-python",
2059
+ "name": "python",
2060
+ "nbconvert_exporter": "python",
2061
+ "pygments_lexer": "ipython3",
2062
+ "version": "3.8.16"
2063
+ }
2064
+ },
2065
+ "nbformat": 4,
2066
+ "nbformat_minor": 2
2067
+ }