質問編集履歴

2

df1_dfにリストのまま代入しようとしていた問題を解決(pandasでデータフレームにした)、簡易な表現に変更

2021/03/16 02:32

投稿

hiroki91629
hiroki91629

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,19 +14,23 @@
14
14
 
15
15
  ###目的
16
16
 
17
- なるべく短時間で処理を行たい。
17
+ 複数の並列処理を入れ子構造で動かし、なるべく短時間で処理を行えるようにしたい。
18
18
 
19
19
 
20
20
 
21
21
  ### 知りたい事
22
22
 
23
- 下記コードが進行不可能な理由。
23
+ 下記コードが進行不可能な理由。←解決
24
24
 
25
25
  下記コードを動かす改善方法。
26
26
 
27
27
  他の有効な並列演算方法はあるかどうか。
28
28
 
29
29
  daemonic processesとは何か。
30
+
31
+ 追記:プロセッシングしてスレッディングすれば解決の可能性があるかもしれないとの事なので、サンプルコードを組んでいただけると助かります。
32
+
33
+ 自身でもやってみます。
30
34
 
31
35
 
32
36
 
@@ -76,41 +80,29 @@
76
80
 
77
81
  #要素数:countの乱数を生成 = ネズミがゴールするまでにかかった時間(ラップタイム)
78
82
 
79
- rap_time_list = []
83
+ rap_time_list = list()#リストとして初期化
80
84
 
81
85
  for i in range(count):
82
86
 
83
- rap_time_list = rap_time_list + [random.uniform(30,60)]#30~60(秒)の乱数
87
+ rap_time_list.append(random.uniform(30,60))#30~60(秒)の乱数をリストに追加。
84
88
 
85
89
  #rap_time_listをデータフレームにし、0列目にラップタイムを持つデータフレームを作成。
86
90
 
87
- df1_df = rap_time_list
91
+ df1_df = pandas.DataFrame(rap_time_list)
88
92
 
89
- #上記データフレームにレーサー番号をつけたいので、1列目に番号つけてラップタイムと紐ける
93
+ #上記データフレームにレーサー番号をつけたいので、indexを付
90
94
 
91
- df1_df[1] = list(range(count))
95
+ df1_df = df1_df.reset_index()
92
96
 
93
97
  #0列目のラップタイムをソートして数字の小さい順(ゴール早かった順)にソート。
94
98
 
95
99
  df2_df = df1_df.sort_values(by=0)
96
100
 
97
- #レーサー番号も追従してソートされているので、利用して順位を取る。
101
+ #レーサー番号もindexとして追従してソートされているので、利用して順位を取る。
98
-
99
- #レーサー番号はdf2_dfの1列目に入っている。
100
102
 
101
103
  for i in range(count):
102
104
 
103
- dummy = df2_df.iat[i,1]
104
-
105
- dummy2 = str(dummy)
106
-
107
- if i == 0:
108
-
109
- race_result = dummy2
110
-
111
- elif i > 0:
112
-
113
- race_result = result + dummy2
105
+ race_result = [df2_df.iat[i,0] for i in range(count)]
114
106
 
115
107
  return race_result
116
108
 

1

import pandasの追記, 誤:da1_df[1] = list(range(count)) →正:df1_df[1] = list(range(count))

2021/03/16 02:32

投稿

hiroki91629
hiroki91629

スコア3

test CHANGED
File without changes
test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
 
62
62
 
63
-
63
+ import pandas
64
64
 
65
65
  import random
66
66
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  #上記データフレームにレーサー番号をつけたいので、1列目に番号をつけてラップタイムと紐付ける。
90
90
 
91
- da1_df[1] = list(range(count))
91
+ df1_df[1] = list(range(count))
92
92
 
93
93
  #0列目のラップタイムをソートして数字の小さい順(ゴール早かった順)にソート。
94
94