質問編集履歴

5

やりたいことを記載しました!

2021/10/18 00:56

投稿

obahaya
obahaya

スコア1

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,21 @@
10
10
 
11
11
 
12
12
 
13
- データフレームには値は1つしか入っていません。
13
+ 比較するデータフレームには値は1つしか入っていません。
14
+
15
+
16
+
17
+ やりたいことは、
18
+
19
+ ①AからD列・1~6362行のcsvファイルを読み込む
20
+
21
+ ②C列とD列の値を用いて、【Cが〇以下かつDが〇以下】と条件を指定し(〇の中にはcの場合0~10、Dの場合0~18)、その条件を満たす行(データ)のみを抽出する
22
+
23
+ ③抽出した行(データ)におけるA列の合計値を求める
24
+
25
+ (「〇以下」の〇の値を一つずつ変えて全通り(11×19通り)の条件において、A列の合計値を求める)
26
+
27
+ ④Aの合計値が23を超える場合のみ、その条件とAの合計値を出力する
14
28
 
15
29
 
16
30
 
@@ -86,7 +100,7 @@
86
100
 
87
101
  dataframe.F{
88
102
 
89
- Colname: "H",
103
+ Colname: "D",
90
104
 
91
105
  Comparator: "<=",
92
106
 

4

詳細を加えました。

2021/10/18 00:56

投稿

obahaya
obahaya

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Goのif文において、
4
4
 
5
- 構造体(データフレーム)と数が比較できないため、
5
+ 構造体(データフレーム)と数が比較できないため、
6
6
 
7
7
  どうすれば良いか教えていただきたいです。
8
8
 
@@ -10,11 +10,15 @@
10
10
 
11
11
 
12
12
 
13
+ データフレームには値は1つしか入っていません。
14
+
15
+
16
+
13
17
  ### 発生している問題・エラーメッセージ
14
18
 
15
19
  ```
16
20
 
17
- invalid operation: df.Capply(mean) > 23.5 (mismatched types dataframe.DataFrame and float64)
21
+ invalid operation: score.Capply(mean) > 23 (mismatched types dataframe.DataFrame and int)
18
22
 
19
23
  ```
20
24
 
@@ -26,9 +30,99 @@
26
30
 
27
31
  ```GO
28
32
 
29
- if score.Capply(mean) > 23.5 {
33
+ package main
30
34
 
35
+
36
+
37
+ import (
38
+
39
+ "fmt"
40
+
41
+ "log"
42
+
43
+ "os"
44
+
45
+
46
+
47
+ "github.com/go-gota/gota/dataframe"
48
+
49
+ "github.com/go-gota/gota/series"
50
+
51
+ )
52
+
53
+
54
+
55
+ func main() {
56
+
57
+ f, err := os.Open("sample.csv")
58
+
59
+ if err != nil {
60
+
61
+ log.Fatal(err)
62
+
63
+ }
64
+
65
+ defer f.Close()
66
+
67
+ df := dataframe.ReadCSV(f)
68
+
69
+ for x := 0; x < 11; x++ {
70
+
71
+ for y := 0; y < 19; y++ {
72
+
73
+ filter := df.FilterAggregation(
74
+
75
+ dataframe.And,
76
+
77
+ dataframe.F{
78
+
79
+ Colname: "C",
80
+
81
+ Comparator: "<=",
82
+
83
+ Comparando: x,
84
+
85
+ },
86
+
87
+ dataframe.F{
88
+
89
+ Colname: "H",
90
+
91
+ Comparator: "<=",
92
+
93
+ Comparando: y,
94
+
95
+ },
96
+
97
+ )
98
+
99
+ score := filter.Select([]string{"A"})
100
+
101
+ mean := func(s series.Series) series.Series {
102
+
103
+ floats := s.Float()
104
+
105
+ sum := 0.0
106
+
107
+ for _, f := range floats {
108
+
109
+ sum += f
110
+
111
+ }
112
+
113
+ return series.Floats(sum)
114
+
115
+ }
116
+
117
+ if score.Capply(mean) > 23 {
118
+
31
- fmt.Println(score.Capply(mean))
119
+ fmt.Println(x, y, score.Capply(mean))
120
+
121
+ }
122
+
123
+ }
124
+
125
+ }
32
126
 
33
127
  }
34
128
 
@@ -39,3 +133,5 @@
39
133
 
40
134
 
41
135
  Gotaのデータフレームを用いています。
136
+
137
+ データフレームには値は1つ(A列の合計値)しか入っていません。

3

ソースコードを訂正しました。

2021/10/18 00:45

投稿

obahaya
obahaya

スコア1

test CHANGED
File without changes
test CHANGED
@@ -26,11 +26,13 @@
26
26
 
27
27
  ```GO
28
28
 
29
- if score.Capply(mean) > 23.5 {
29
+ if score.Capply(mean) > 23.5 {
30
30
 
31
- fmt.Println(score.Capply(mean))
31
+ fmt.Println(score.Capply(mean))
32
32
 
33
- }
33
+ }
34
+
35
+ ```
34
36
 
35
37
  ### 補足情報(FW/ツールのバージョンなど)
36
38
 

2

前回のは解決できましたが、新たな課題に当たりました。

2021/10/15 07:55

投稿

obahaya
obahaya

スコア1

test CHANGED
@@ -1 +1 @@
1
- Go Filter(条件に一致した行取得)の使い方が分からな
1
+ Go 構造体(データフレーム)と数字比較する知りたです。
test CHANGED
@@ -1,38 +1,20 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Goのデータフレームにおいて、
3
+ Goのif文において、
4
4
 
5
- Filter(条件に一致し行を取得)の使い方が分かりません。
5
+ 構造体(データフレーム)と数字が比較できないめ、
6
6
 
7
+ どうすれば良いか教えていただきたいです。
7
8
 
8
-
9
- csvァイルの中身は1行目A,B,C,…M,Nと記載し、
9
+ データレームをリスト変更する方法など教えてください。
10
-
11
- 2行目以降は数値のみが記載されています。
12
-
13
-
14
-
15
- C(C列)の値が3以下かつD(D列)の値が4以下のデータ(行)のみを抽出し出力したいです。
16
10
 
17
11
 
18
12
 
19
13
  ### 発生している問題・エラーメッセージ
20
14
 
21
-
22
-
23
15
  ```
24
16
 
25
- .\test2.go:17:34: cannot use "C" (type untyped string) as type int in field value
26
-
27
- .\test2.go:17:45: cannot use 3 (type untyped int) as type series.Comparator in field value
17
+ invalid operation: df.Capply(mean) > 23.5 (mismatched types dataframe.DataFrame and float64)
28
-
29
- .\test2.go:17:45: too few values in dataframe.F{...}
30
-
31
- .\test2.go:18:22: cannot use "D" (type untyped string) as type int in field value
32
-
33
- .\test2.go:18:33: cannot use 4 (type untyped int) as type series.Comparator in field value
34
-
35
- .\test2.go:18:33: too few values in dataframe.F{...}
36
18
 
37
19
  ```
38
20
 
@@ -44,49 +26,11 @@
44
26
 
45
27
  ```GO
46
28
 
47
- package main
29
+ if score.Capply(mean) > 23.5 {
48
30
 
31
+ fmt.Println(score.Capply(mean))
49
32
 
50
-
51
- import (
52
-
53
- "fmt"
54
-
55
- "io/ioutil"
56
-
57
- "strings"
58
-
59
-
60
-
61
- "github.com/go-gota/gota/dataframe"
62
-
63
- )
64
-
65
-
66
-
67
- func main() {
68
-
69
- content, _ := ioutil.ReadFile("sample.csv")
70
-
71
- ioContent := strings.NewReader(string(content))
72
-
73
-
74
-
75
- df := dataframe.ReadCSV(ioContent)
76
-
77
-
78
-
79
- filter := df.Filter(dataframe.F{"C", "<=", 3}).
80
-
81
- Filter(dataframe.F{"D", "<=", 4})
82
-
83
-
84
-
85
- fmt.Println(filter)
86
-
87
- }
33
+ }
88
-
89
- ```
90
34
 
91
35
  ### 補足情報(FW/ツールのバージョンなど)
92
36
 

1

タグを変更しました!

2021/10/15 06:09

投稿

obahaya
obahaya

スコア1

test CHANGED
File without changes
test CHANGED
File without changes