回答編集履歴

3

2024/03/16 07:04

投稿

melian
melian

スコア19860

test CHANGED
@@ -24,8 +24,9 @@
24
24
  > (グルーピング時に、種類2名、値1、値2は同じなので、そのまま)
25
25
 
26
26
  ```python
27
- dfy = dfx.iloc[:,2:].groupby(['種類1', '種類2'], as_index=False, sort=False)\
27
+ grp = dfx.iloc[:,2:].groupby(['種類1', '種類2'], as_index=False, sort=False)
28
+ dfy = grp.first()
28
- .apply(lambda x: x.assign(個数=len(x)).iloc[0], include_groups=False)
29
+ dfy['個数'] = grp.size()['size']
29
30
  dfy['合計値1'] = dfy['値1'] * dfy['個数']
30
31
  dfy['合計値2'] = dfy['値2'] * dfy['個数']
31
32
 

2

2024/03/16 06:55

投稿

melian
melian

スコア19860

test CHANGED
@@ -24,7 +24,7 @@
24
24
  > (グルーピング時に、種類2名、値1、値2は同じなので、そのまま)
25
25
 
26
26
  ```python
27
- dfy = dfx.iloc[:,2:].groupby(['種類1', '種類2'], as_index=False)\
27
+ dfy = dfx.iloc[:,2:].groupby(['種類1', '種類2'], as_index=False, sort=False)\
28
28
  .apply(lambda x: x.assign(個数=len(x)).iloc[0], include_groups=False)
29
29
  dfy['合計値1'] = dfy['値1'] * dfy['個数']
30
30
  dfy['合計値2'] = dfy['値2'] * dfy['個数']
@@ -33,10 +33,10 @@
33
33
  ```
34
34
  | 種類1 | 種類2 | 種類2名 | 値1 | 値2 | 個数 | 合計値1 | 合計値2 |
35
35
  |:------------|:--------|:----------|------:|------:|-------:|----------:|----------:|
36
- | S01 | P005 | 丸 | 1 | 1 | 1 | 1 | 1 |
36
+ | S02+S03+S05 | P001 | 丸 | 21 | 85 | 1 | 21 | 85 |
37
+ | S02+S05 | P002 | 三角 | 15 | 16 | 2 | 30 | 32 |
37
38
  | S02 | P003 | 四角 | 11 | 11 | 1 | 11 | 11 |
38
39
  | S02+S03 | P004 | 線 | 24 | 20 | 1 | 24 | 20 |
39
- | S02+S03+S05 | P001 | 丸 | 21 | 85 | 1 | 21 | 85 |
40
- | S02+S05 | P002 | 三角 | 15 | 16 | 2 | 30 | 32 |
41
40
  | S02+S06 | P002 | 三角 | 12 | 13 | 1 | 12 | 13 |
41
+ | S01 | P005 | 丸 | 1 | 1 | 1 | 1 | 1 |
42
42
 

1

2024/03/16 06:50

投稿

melian
melian

スコア19860

test CHANGED
@@ -19,3 +19,24 @@
19
19
  | D003 | 2 | S02+S05 | P002 | 三角 | 15 | 16 |
20
20
  | D003 | 3 | S01 | P005 | 丸 | 1 | 1 |
21
21
 
22
+ > 質問(2)
23
+ > さらに、種類1、種類2でグルーピングし、そのさいにまとめた時の個数と値1、値2にそれぞれ個数をかけた合計値1、合計値値2を追加したい(データ2→データ3)
24
+ > (グルーピング時に、種類2名、値1、値2は同じなので、そのまま)
25
+
26
+ ```python
27
+ dfy = dfx.iloc[:,2:].groupby(['種類1', '種類2'], as_index=False)\
28
+ .apply(lambda x: x.assign(個数=len(x)).iloc[0], include_groups=False)
29
+ dfy['合計値1'] = dfy['値1'] * dfy['個数']
30
+ dfy['合計値2'] = dfy['値2'] * dfy['個数']
31
+
32
+ print(dfy)
33
+ ```
34
+ | 種類1 | 種類2 | 種類2名 | 値1 | 値2 | 個数 | 合計値1 | 合計値2 |
35
+ |:------------|:--------|:----------|------:|------:|-------:|----------:|----------:|
36
+ | S01 | P005 | 丸 | 1 | 1 | 1 | 1 | 1 |
37
+ | S02 | P003 | 四角 | 11 | 11 | 1 | 11 | 11 |
38
+ | S02+S03 | P004 | 線 | 24 | 20 | 1 | 24 | 20 |
39
+ | S02+S03+S05 | P001 | 丸 | 21 | 85 | 1 | 21 | 85 |
40
+ | S02+S05 | P002 | 三角 | 15 | 16 | 2 | 30 | 32 |
41
+ | S02+S06 | P002 | 三角 | 12 | 13 | 1 | 12 | 13 |
42
+