teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

現状

2019/01/26 13:43

投稿

ba-ba-ba
ba-ba-ba

スコア16

title CHANGED
File without changes
body CHANGED
@@ -17,10 +17,11 @@
17
17
 
18
18
 
19
19
  ### 発生している問題
20
+ IDのunique数と同じデータ数を取得しなければならないが,下記のコードでは取得する数が少ない.
21
+ ID:500,c2:440
22
+ となってしまう.
20
- のようにコードを書いたらいいのかわかりせん.
23
+ n場所が間違っているような気がしすが…
21
- 少しでもご助言いただければ幸いです.
22
24
 
23
-
24
25
  ### 該当のソースコード
25
26
  ```python
26
27
  #データの読み込み
@@ -38,19 +39,22 @@
38
39
  c2 = []
39
40
  d3 = []
40
41
  for i in ID_uni:
42
+ #n = 1
41
43
  for j in range(len(test["ID"])):
44
+ print(n)
42
45
  if test["ID"][j] == i:
43
- a = test["a"][j]
46
+ #a = test["a"][j]
44
47
  #b = test["b"][j]
45
- #c = test["c"][j]
48
+ c = test["c"][j]
46
49
  #d = test["d"][j]
47
- if a != 0:
50
+ if c != 0:
48
- a.append(a)
51
+ c2.append(c)
49
52
  break
50
- else :
53
+ elif n == test['ID'].value_counts()[i]:
51
- a.append(np.nan)
54
+ c2.append(0)
55
+ break
56
+ n += 1
52
57
 
53
-
54
58
  ソースコード
55
59
  ```
56
60
 

2

現在の状態

2019/01/26 13:43

投稿

ba-ba-ba
ba-ba-ba

スコア16

title CHANGED
File without changes
body CHANGED
@@ -28,8 +28,29 @@
28
28
  test["date"] = pd.to_datetime(test['date'])
29
29
  test = test.set_index(["ID","date"])
30
30
 
31
+ #今現在の状況
32
+ test = test.reset_index(["ID","date"])
33
+ ID_uni = test["ID"].unique()
34
+ test = test.fillna(0)
31
35
 
36
+ a1 = []
37
+ b1 = []
38
+ c2 = []
39
+ d3 = []
40
+ for i in ID_uni:
41
+ for j in range(len(test["ID"])):
42
+ if test["ID"][j] == i:
43
+ a = test["a"][j]
44
+ #b = test["b"][j]
45
+ #c = test["c"][j]
46
+ #d = test["d"][j]
47
+ if a != 0:
48
+ a.append(a)
49
+ break
50
+ else :
51
+ a.append(np.nan)
32
52
 
53
+
33
54
  ソースコード
34
55
  ```
35
56
 

1

データの読み込み追加

2019/01/26 12:52

投稿

ba-ba-ba
ba-ba-ba

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,14 @@
1
1
  ###DataFrameからの値抽出アルゴリズムで困っています.
2
- 下記のような階層構造のデータフレームにいて![イメージ説明](51e99094f0e8c893ee379f91bed631d9.png)
2
+ 下記のようなデータフレームにいて
3
- ![イメージ説明](adbde6c209bd03e9ea57a827d1bfa0d6.png)
3
+ ![イメージ説明](e0e0d3bf5679437045b531a7f84778f1.png)
4
4
 
5
+ ![イメージ説明](e6411d6e830030d182ae8bc48ccaa576.png)
6
+
5
7
  各ID毎のa-dの値を抽出したい
6
8
  抽出する値は最も古いもの
7
9
 
10
+
11
+
8
12
  ###例
9
13
  ID272083の場合は
10
14
  a,cは2017-04-03の値(a:16662,c:2800.7)を採用するが
@@ -18,26 +22,17 @@
18
22
 
19
23
 
20
24
  ### 該当のソースコード
25
+ ```python
26
+ #データの読み込み
27
+ test = pd.read_csv()
28
+ test["date"] = pd.to_datetime(test['date'])
29
+ test = test.set_index(["ID","date"])
21
30
 
22
- ```python
31
+
23
- a = []
32
+
24
- n = 0
25
- for k in pID_uni:
26
- for m in range(len(file1_2["pID"])):
27
- for i in range(len(file1_2.columns)-3):#横
28
- for j in range(file1_2['pID'].value_counts()[pID_uni]):#縦
29
- if k == file1_2["pID"][m]:
30
- if file1_2.iat[j,i+3] != 0:
31
- a.append(file1_2.iat[j,i+3])
32
- elif j == len(file1_2['pID'].value_counts()[pID_uni]):
33
- if file1_2.iat[j,i+3] != 0:
34
- a.append(file1_2.iat[j,i+3])
35
- else :
36
- a.append(0)
37
- n = n+1
38
33
  ソースコード
39
34
  ```
40
35
 
41
36
  ### 試したこと
42
37
 
43
- 階層をはずしたりし,試行錯誤していますが,うまくいきません.
38
+ 階層をはずしたりし,試行錯誤していますが,うまくいきません.