回答編集履歴
2
test
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
> 2系の仕様でgroupbyとapply関数を用いてグループ別の割合を算出する方法
|
2
2
|
|
3
|
-
`groupby()` の結果、multi-index になっていて、`reset_index(drop=True)` で元のインデックスを削除してしまっています。なので、グループインデックス(`male`, `female`)
|
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())
|
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
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> 2系の仕様でgroupbyとapply関数を用いてグループ別の割合を算出する方法
|
2
2
|
|
3
|
-
`groupby()` の結果、multi-index になっていて、`reset_index(drop=True)` で元のインデックスを削除してしまっています。なので、グループインデックス(`male`, `female`)のみを削除することで元のインデックス
|
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)
|