質問編集履歴
5
データのタイポを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -57,7 +57,7 @@
|
|
57
57
|
S02+S03+S05|P001|丸|21|85|1|21|85|
|
58
58
|
S02+S05|P002|三角|15|16|2|30|32|
|
59
59
|
S02|P003|四角|11|11|1|11|11|
|
60
|
-
S02+S03|P004|
|
60
|
+
S02+S03|P004|線|24|20|1|24|20|
|
61
61
|
S02+S06|P002|三角|12|13|1|12|13|
|
62
62
|
S01|P006|丸|1|1|1|1|1|
|
63
63
|
|
4
質問2の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
以下の2つの処理をしたいと考えています。
|
4
4
|
|
5
|
-
**質問(1)**
|
5
|
+
#### **質問(1)**
|
6
6
|
Python Pandas Dataframeを使って、データ1を下記のような条件でデータ2のようにまとめたい(データ1→データ2)
|
7
7
|
- ID1とID2でグルーピングしたい
|
8
8
|
- 数字はsumしたい
|
@@ -14,8 +14,9 @@
|
|
14
14
|
- もしそれが困難な場合は、ID2は使わないので、sumしてしまってもよい
|
15
15
|
(蛇足な質問です。先に、数字でなく文字列(dataframeの型を文字に)にすれば良いかもしれませんが、Pandasの使い方として、列ごとに指定できるか知りたいと思います)
|
16
16
|
|
17
|
+
|
17
|
-
**質問(2)**
|
18
|
+
#### **質問(2)**
|
18
|
-
さらに、種類1、種類2でグルーピングし、そのさいまとめた時の個数を追加したい(データ2→データ3)
|
19
|
+
さらに、種類1、種類2でグルーピングし、そのさいにまとめた時の個数と値1、値2にそれぞれ個数をかけた合計値1、合計値値2を追加したい(データ2→データ3)
|
19
20
|
(グルーピング時に、種類2名、値1、値2は同じなので、そのまま)
|
20
21
|
|
21
22
|
以上、よろしくお願い致します。
|
@@ -51,14 +52,14 @@
|
|
51
52
|
D003|3|S01|P006|丸|1|1
|
52
53
|
|
53
54
|
### データ3
|
54
|
-
|種類1|種類2|種類2名|値1|値2|個数|
|
55
|
+
|種類1|種類2|種類2名|値1|値2|個数|合計値1|合計値2|
|
55
|
-
|:--|:--:|:--:|:--:|:--:|--:|
|
56
|
+
|:--|:--:|:--:|:--:|:--:|:--:|:--:|--:|
|
56
|
-
S02+S03+S05|P001|丸|21|85|1|
|
57
|
+
S02+S03+S05|P001|丸|21|85|1|21|85|
|
57
|
-
S02+S05|P002|三角|15|16|2|
|
58
|
+
S02+S05|P002|三角|15|16|2|30|32|
|
58
|
-
S02|P003|四角|11|11|1|
|
59
|
+
S02|P003|四角|11|11|1|11|11|
|
59
|
-
S02+S03|P004|レッド|24|20|1|
|
60
|
+
S02+S03|P004|レッド|24|20|1|24|20|
|
60
|
-
S02+S06|P002|三角|12|13|1|
|
61
|
+
S02+S06|P002|三角|12|13|1|12|13|
|
61
|
-
S01|P006|丸|1|1|1
|
62
|
+
S01|P006|丸|1|1|1|1|1|
|
62
63
|
|
63
64
|
|
64
65
|
### 該当のソースコード
|
3
dfの定義を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
さらに、可能なら
|
13
13
|
- ID2だけ文字列と同じ扱いにしたい。
|
14
14
|
- もしそれが困難な場合は、ID2は使わないので、sumしてしまってもよい
|
15
|
-
(先に、数字でなく文字列(
|
15
|
+
(蛇足な質問です。先に、数字でなく文字列(dataframeの型を文字に)にすれば良いかもしれませんが、Pandasの使い方として、列ごとに指定できるか知りたいと思います)
|
16
16
|
|
17
17
|
**質問(2)**
|
18
18
|
さらに、種類1、種類2でグルーピングし、そのさいまとめた時の個数を追加したい(データ2→データ3)
|
@@ -65,7 +65,33 @@
|
|
65
65
|
|
66
66
|
**質問(1)について**
|
67
67
|
```python
|
68
|
+
# 本来はcsvを読み込んでいます。それにあわせるために、astype(int)しました。
|
69
|
+
import pandas as pd
|
70
|
+
|
71
|
+
df = pd.DataFrame([
|
72
|
+
['D001','1','S02','P001','丸','13','37'],
|
73
|
+
['D001','1','S03','P001','丸','6','28'],
|
74
|
+
['D001','1','S05','P001','丸','2','20'],
|
75
|
+
['D001','2','S02','P002','三角','10','10'],
|
76
|
+
['D001','2','S05','P002','三角','5','6'],
|
77
|
+
['D001','3','S02','P003','四角','11','11'],
|
78
|
+
['D002','1','S02','P004','線','15','12'],
|
79
|
+
['D002','1','S03','P004','線','9','8'],
|
80
|
+
['D003','1','S02','P002','三角','10','10'],
|
81
|
+
['D003','1','S06','P002','三角','2','3'],
|
82
|
+
['D003','2','S02','P002','三角','10','10'],
|
83
|
+
['D003','2','S05','P002','三角','5','6'],
|
84
|
+
['D003','3','S01','P005','丸','1','1']
|
85
|
+
],
|
86
|
+
columns=['ID1','ID2','種類1','種類2','種類2名','値1','値2'],
|
87
|
+
)
|
88
|
+
|
89
|
+
df['ID2'] = df['ID2'].astype(int)
|
90
|
+
df['値1'] = df['値1'].astype(int)
|
91
|
+
df['値2'] = df['値2'].astype(int)
|
92
|
+
|
68
|
-
|
93
|
+
dfg = df.groupby(['ID1','ID2']).sum()
|
94
|
+
print(dfg)
|
69
95
|
```
|
70
96
|
|
71
97
|
### 発生している問題
|
2
df定義を消去
test
CHANGED
File without changes
|
test
CHANGED
@@ -65,24 +65,6 @@
|
|
65
65
|
|
66
66
|
**質問(1)について**
|
67
67
|
```python
|
68
|
-
df = pd.DataFrame([
|
69
|
-
['D001','1','S02','P001','丸','13','37'],
|
70
|
-
['D001','1','S03','P001','丸','6','28'],
|
71
|
-
['D001','1','S05','P001','丸','2','20'],
|
72
|
-
['D001','2','S02','P002','三角','10','10'],
|
73
|
-
['D001','2','S05','P002','三角','5','6'],
|
74
|
-
['D001','3','S02','P003','四角','11','11'],
|
75
|
-
['D002','1','S02','P004','線','15','12'],
|
76
|
-
['D002','1','S03','P004','線','9','8'],
|
77
|
-
['D003','1','S02','P002','三角','10','10'],
|
78
|
-
['D003','1','S06','P002','三角','2','3'],
|
79
|
-
['D003','2','S02','P002','三角','10','10'],
|
80
|
-
['D003','2','S05','P002','三角','5','6'],
|
81
|
-
['D003','3','S01','P005','丸','1','1']
|
82
|
-
],
|
83
|
-
columns=['ID1','ID2','種類1','種類2','種類2名','値1','値2'],
|
84
|
-
)
|
85
|
-
|
86
68
|
print(df.groupby(['ID1','ID2']).sum())
|
87
69
|
```
|
88
70
|
|
1
ソースにdfの定義を追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -65,7 +65,25 @@
|
|
65
65
|
|
66
66
|
**質問(1)について**
|
67
67
|
```python
|
68
|
+
df = pd.DataFrame([
|
69
|
+
['D001','1','S02','P001','丸','13','37'],
|
70
|
+
['D001','1','S03','P001','丸','6','28'],
|
71
|
+
['D001','1','S05','P001','丸','2','20'],
|
72
|
+
['D001','2','S02','P002','三角','10','10'],
|
73
|
+
['D001','2','S05','P002','三角','5','6'],
|
74
|
+
['D001','3','S02','P003','四角','11','11'],
|
75
|
+
['D002','1','S02','P004','線','15','12'],
|
76
|
+
['D002','1','S03','P004','線','9','8'],
|
77
|
+
['D003','1','S02','P002','三角','10','10'],
|
78
|
+
['D003','1','S06','P002','三角','2','3'],
|
79
|
+
['D003','2','S02','P002','三角','10','10'],
|
80
|
+
['D003','2','S05','P002','三角','5','6'],
|
81
|
+
['D003','3','S01','P005','丸','1','1']
|
82
|
+
],
|
83
|
+
columns=['ID1','ID2','種類1','種類2','種類2名','値1','値2'],
|
84
|
+
)
|
85
|
+
|
68
|
-
df.groupby(['ID1','ID2']).sum()
|
86
|
+
print(df.groupby(['ID1','ID2']).sum())
|
69
87
|
```
|
70
88
|
|
71
89
|
### 発生している問題
|