回答編集履歴

2

2024/10/15 03:25

投稿

melian
melian

スコア20530

test CHANGED
@@ -1,9 +1,9 @@
1
1
  > 2系の仕様でgroupbyとapply関数を用いてグループ別の割合を算出する方法
2
2
 
3
- `groupby()` の結果、multi-index になっていて、`reset_index(drop=True)` で元のインデックスを削除してしまっています。なので、グループインデックス(`male`, `female`)のみ削除るこで元のインデックスに合わせて `rate` 作成します。
3
+ `groupby()` の結果、multi-index になっていて、`reset_index(drop=True)` で元のインデックスを削除してしまっています。なので、グループインデックス(`male`, `female`)を作成しない様にればよいか思います。(`group_keys=False` を指定)
4
4
 
5
5
  ```python
6
- df["rate"] = df.groupby("sex")["fare"].apply(lambda x: x/x.sum()).reset_index(level=0, drop=True)
6
+ df["rate"] = df.groupby("sex", group_keys=False)["fare"].apply(lambda x: x/x.sum())
7
7
 
8
8
  print(df.groupby("sex")["rate"].sum())
9
9
 

1

2024/10/15 03:16

投稿

melian
melian

スコア20530

test CHANGED
@@ -1,6 +1,6 @@
1
1
  > 2系の仕様でgroupbyとapply関数を用いてグループ別の割合を算出する方法
2
2
 
3
- `groupby()` の結果、multi-index になっていて、`reset_index(drop=True)` で元のインデックスを削除してしまっています。なので、グループインデックス(`male`, `female`)のみを削除することで元のインデックス合わせて `rate` 列を作成します。
3
+ `groupby()` の結果、multi-index になっていて、`reset_index(drop=True)` で元のインデックスを削除してしまっています。なので、グループインデックス(`male`, `female`)のみを削除することで元のインデックス合わせて `rate` 列を作成します。
4
4
 
5
5
  ```python
6
6
  df["rate"] = df.groupby("sex")["fare"].apply(lambda x: x/x.sum()).reset_index(level=0, drop=True)