質問編集履歴

5

データのタイポを修正

2024/03/17 03:36

投稿

kanchiru
kanchiru

スコア3

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|レッド|24|20|1|24|20|
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の修正

2024/03/16 06:00

投稿

kanchiru
kanchiru

スコア3

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の定義を追加

2024/03/16 05:27

投稿

kanchiru
kanchiru

スコア3

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
  さらに、可能なら
13
13
  - ID2だけ文字列と同じ扱いにしたい。
14
14
  - もしそれが困難な場合は、ID2は使わないので、sumしてしまってもよい
15
- (先に、数字でなく文字列(E1,E2,...など)にすれば良いかもしれませんが、Pandasの使い方として、列ごとに指定できるか知りたいと思います)
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
- print(df.groupby(['ID1','ID2']).sum())
93
+ dfg = df.groupby(['ID1','ID2']).sum()
94
+ print(dfg)
69
95
  ```
70
96
 
71
97
  ### 発生している問題

2

df定義を消去

2024/03/16 05:20

投稿

kanchiru
kanchiru

スコア3

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の定義を追加しました。

2024/03/16 05:11

投稿

kanchiru
kanchiru

スコア3

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
  ### 発生している問題