質問編集履歴

3

現状

2019/01/26 13:43

投稿

ba-ba-ba
ba-ba-ba

スコア16

test CHANGED
File without changes
test CHANGED
@@ -36,11 +36,13 @@
36
36
 
37
37
  ### 発生している問題
38
38
 
39
- ようにコ書いたらいいのかわかりません
39
+ IDunique数と同じデタ数取得しなければなが,下記のコードでは取得する数が少ない.
40
40
 
41
- 少しでもご助言いただければ幸いです.
41
+ ID:500,c2:440
42
42
 
43
+ となってしまう.
43
44
 
45
+ nの場所が間違っているような気がしますが…
44
46
 
45
47
 
46
48
 
@@ -78,29 +80,35 @@
78
80
 
79
81
  for i in ID_uni:
80
82
 
83
+ #n = 1
84
+
81
85
  for j in range(len(test["ID"])):
86
+
87
+ print(n)
82
88
 
83
89
  if test["ID"][j] == i:
84
90
 
85
- a = test["a"][j]
91
+ #a = test["a"][j]
86
92
 
87
93
  #b = test["b"][j]
88
94
 
89
- #c = test["c"][j]
95
+ c = test["c"][j]
90
96
 
91
97
  #d = test["d"][j]
92
98
 
93
- if a != 0:
99
+ if c != 0:
94
100
 
95
- a.append(a)
101
+ c2.append(c)
96
102
 
97
103
  break
98
104
 
99
- else :
105
+ elif n == test['ID'].value_counts()[i]:
100
106
 
101
- a.append(np.nan)
107
+ c2.append(0)
102
108
 
109
+ break
103
110
 
111
+ n += 1
104
112
 
105
113
 
106
114
 

2

現在の状態

2019/01/26 13:43

投稿

ba-ba-ba
ba-ba-ba

スコア16

test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,48 @@
58
58
 
59
59
 
60
60
 
61
+ #今現在の状況
62
+
63
+ test = test.reset_index(["ID","date"])
64
+
65
+ ID_uni = test["ID"].unique()
66
+
67
+ test = test.fillna(0)
68
+
69
+
70
+
71
+ a1 = []
72
+
73
+ b1 = []
74
+
75
+ c2 = []
76
+
77
+ d3 = []
78
+
79
+ for i in ID_uni:
80
+
81
+ for j in range(len(test["ID"])):
82
+
83
+ if test["ID"][j] == i:
84
+
85
+ a = test["a"][j]
86
+
87
+ #b = test["b"][j]
88
+
89
+ #c = test["c"][j]
90
+
91
+ #d = test["d"][j]
92
+
93
+ if a != 0:
94
+
95
+ a.append(a)
96
+
97
+ break
98
+
99
+ else :
100
+
101
+ a.append(np.nan)
102
+
61
103
 
62
104
 
63
105
 

1

データの読み込み追加

2019/01/26 12:52

投稿

ba-ba-ba
ba-ba-ba

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,22 @@
1
1
  ###DataFrameからの値抽出アルゴリズムで困っています.
2
2
 
3
- 下記のような階層構造のデータフレームにいて![イメージ説明](51e99094f0e8c893ee379f91bed631d9.png)
3
+ 下記のようなデータフレームにいて
4
4
 
5
+ ![イメージ説明](e0e0d3bf5679437045b531a7f84778f1.png)
6
+
7
+
8
+
5
- ![イメージ説明](adbde6c209bd03e9ea57a827d1bfa0d6.png)
9
+ ![イメージ説明](e6411d6e830030d182ae8bc48ccaa576.png)
6
10
 
7
11
 
8
12
 
9
13
  各ID毎のa-dの値を抽出したい
10
14
 
11
15
  抽出する値は最も古いもの
16
+
17
+
18
+
19
+
12
20
 
13
21
 
14
22
 
@@ -38,39 +46,21 @@
38
46
 
39
47
  ### 該当のソースコード
40
48
 
49
+ ```python
50
+
51
+ #データの読み込み
52
+
53
+ test = pd.read_csv()
54
+
55
+ test["date"] = pd.to_datetime(test['date'])
56
+
57
+ test = test.set_index(["ID","date"])
41
58
 
42
59
 
43
- ```python
44
60
 
45
- a = []
46
61
 
47
- n = 0
48
62
 
49
- for k in pID_uni:
50
63
 
51
- for m in range(len(file1_2["pID"])):
52
-
53
- for i in range(len(file1_2.columns)-3):#横
54
-
55
- for j in range(file1_2['pID'].value_counts()[pID_uni]):#縦
56
-
57
- if k == file1_2["pID"][m]:
58
-
59
- if file1_2.iat[j,i+3] != 0:
60
-
61
- a.append(file1_2.iat[j,i+3])
62
-
63
- elif j == len(file1_2['pID'].value_counts()[pID_uni]):
64
-
65
- if file1_2.iat[j,i+3] != 0:
66
-
67
- a.append(file1_2.iat[j,i+3])
68
-
69
- else :
70
-
71
- a.append(0)
72
-
73
- n = n+1
74
64
 
75
65
  ソースコード
76
66
 
@@ -82,4 +72,4 @@
82
72
 
83
73
 
84
74
 
85
- 階層をはずしたりし,試行錯誤していますが,うまくいきません.
75
+ 階層をはずしたりし,試行錯誤していますが,うまくいきません.