回答編集履歴

1

pandasを使ったコードを追加

2021/09/01 12:38

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -7,3 +7,47 @@
7
7
 
8
8
 
9
9
  質問にある領域1,領域2、領域3と見比べてみてください。
10
+
11
+
12
+
13
+ 追記
14
+
15
+
16
+
17
+ うまく動いたようで良かったですね。
18
+
19
+
20
+
21
+ 最初に作ったコードを載せておきます。(defの行を入れたので一行増えています)
22
+
23
+ ご参考まで
24
+
25
+
26
+
27
+ ```python
28
+
29
+ >>> import pandas as pd
30
+
31
+ >>> left = [1, 3, 6]
32
+
33
+ >>> right = [4, 5, 8]
34
+
35
+ >>>
36
+
37
+ >>> import pandas as pd
38
+
39
+ >>> def unite(left, right):
40
+
41
+ ... df = pd.DataFrame({'x':left+right, 'w':[1]*len(left)+[-1]*len(right)}).sort_values('x')
42
+
43
+ ... df['cs'] = df['w'].cumsum()
44
+
45
+ ... return list(df[(df['w']==1) & (df['cs']==1)]['x']), list(df[(df['w']==-1) & (df['cs']==0)]['x'])
46
+
47
+ ...
48
+
49
+ >>> unite(left, right)
50
+
51
+ ([1, 6], [5, 8])
52
+
53
+ ```