質問編集履歴
3
現状
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
|
-
|
48
|
+
c = test["c"][j]
|
46
49
|
#d = test["d"][j]
|
47
|
-
if
|
50
|
+
if c != 0:
|
48
|
-
|
51
|
+
c2.append(c)
|
49
52
|
break
|
50
|
-
|
53
|
+
elif n == test['ID'].value_counts()[i]:
|
51
|
-
|
54
|
+
c2.append(0)
|
55
|
+
break
|
56
|
+
n += 1
|
52
57
|
|
53
|
-
|
54
58
|
ソースコード
|
55
59
|
```
|
56
60
|
|
2
現在の状態
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
データの読み込み追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
###DataFrameからの値抽出アルゴリズムで困っています.
|
2
|
-
下記のような
|
2
|
+
下記のようなデータフレームに置いて
|
3
|
-

|
4
4
|
|
5
|
+

|
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
|
-
|
31
|
+
|
23
|
-
|
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
|
+
階層をはずしたりし,試行錯誤していますが,うまくいきません.
|